USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
[문제링크](https://school.programmers.co.kr/learn/courses/30/lessons/131534\)
조건정리
1. 2021년 가입 회원
2. (구매회원수 / 전체 회원수) > 비율계산
풀이
WITH total_2021 AS
(
SELECT count(*) AS total_users
FROM user_info
WHERE YEAR(joined) = 2021
)
SELECT YEAR(o.sales_date) AS year,
MONTH(o.sales_date) AS month,
COUNT(DISTINCT o.user_id) AS purchased_users,
ROUND(COUNT(DISTINCT o.user_id) / t.total_users,1) AS purchased_ratio
FROM user_info u
INNER JOIN online_sale o ON u.user_id = o.user_id
CROSS JOIN total_2021 t
WHERE YEAR(u.joined) = 2021
GROUP BY 1, 2
ORDER BY 1, 2