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로 중복제거
'SQL 문제풀이' 카테고리의 다른 글
[해커랭크 SQL] Basic Select - Revising the Select Query II (0) | 2023.08.15 |
---|---|
[해커랭크 SQL] Basic Select - Revising the Select Query I (0) | 2023.08.15 |
[프로그래머스 SQL] LV.4 자동차 대여 기록 별 대여 금액 구하기 (0) | 2023.08.12 |
[프로그래머스 SQL] LV.4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.08.12 |
[프로그래머스 SQL] LV.1 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2023.08.12 |