https://school.programmers.co.kr/learn/courses/30/lessons/131534
SELECT YEAR(b.SALES_DATE) as YEAR, MONTH(b.SALES_DATE) as MONTH, count(DISTINCT(b.USER_ID)) as PUCHASED_USERS,
ROUND(count(DISTINCT(b.USER_ID)) / (SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED) = '2021'), 1) as
PUCHASED_RATIO
FROM USER_INFO a JOIN ONLINE_SALE b
ON a.USER_ID = b.USER_ID
WHERE YEAR(a.JOINED) = '2021'
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH;
문제를 이해하는데 조금 오래 걸렸다.
우선 주의할 점이 몇가지 있다.
1. PUCHASED_USERS는 2021년에 가입한 전체 회원들 중 상품을 구매한 회원 수 이므로 한 회원이 상품을 여러개 구매하는 경우를 고려해 DISTINCT로 중복을 제거해야한다.
2. PUCHASED_RATIO는 (2021년에 가입한 회원 중 상품을 구매한 회원 수 / 2021년에 가입한 전체 회원수) 다.
이때, 분자는 PUCHASED_USERS와 동일하고, 분모는 WHERE절로 2021년에 가입한 조건만 걸어주면된다.
'Language > SQL' 카테고리의 다른 글
[프로그래머스] 취소되지 않은 진료 예약 조회하기 (0) | 2022.12.20 |
---|---|
[프로그래머스] 카테고리 별 상품 개수 구하기 (0) | 2022.12.19 |
[프로그래머스] 조건별로 분류하여 주문상태 출력하기 (0) | 2022.12.19 |
[프로그래머스] 상품 별 오프라인 매출 구하기 (0) | 2022.12.19 |
[프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2022.12.19 |