SQL 문제풀이
[프로그래머스 SQL] LV.5 상품을 구매한 회원 비율 구하기
냄비짱
2023. 8. 12. 05:09
728x90
❓ Question
❗ Answer
SELECT YEAR(sale.sales_date) year
, MONTH(sale.sales_date) month
, COUNT(DISTINCT sale.user_id) purchased_users
, ROUND(COUNT(DISTINCT sale.user_id)/(SELECT COUNT(*)
FROM user_info
WHERE YEAR(joined) = '2021'),1) purchased_ratio
FROM user_info info
INNER JOIN online_sale sale
ON info.user_id = sale.user_id
WHERE YEAR(info.joined) = '2021'
GROUP BY year, month
ORDER BY year, month;
📌 Discussion
- (2021년에 가입한 사람 중 언제라도 구입한 내역이 있는 사람 / 2021년에 가입한 사람)을
sales_date의 연도와 월 별로 구하는 문제 - 첫번째 sub query에서 2021년에 가입한 사람의 수를 추출
- user_id 기준으로 join 후 WHERE절에서 가입연도가 2021년인 레코드만 남긴다.
- sales_date에 대해 GROUP BY 진행
- 한 사람이 여러 제품을 구매할 수 있으므로 DISTINCT로 중복제거