1. quiz
- USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
2. answer
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
COUNT(DISTINCT u.USER_ID) AS PUCHASED_USERS,
ROUND(COUNT(DISTINCT u.USER_ID) / COUNT, 1) AS PUCHASED_RATIO
FROM ONLINE_SALE o
INNER JOIN (
SELECT USER_ID,
COUNT(*) OVER() AS COUNT
FROM USER_INFO
WHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31'
) u ON u.USER_ID = o.USER_ID
GROUP BY YEAR,MONTH
ORDER BY YEAR, MONTH
SELECT YEAR(sales_date) AS year
,MONTH(sales_date) AS month
,count(DISTINCT O.user_id) AS puchased_users
,round(count(DISTINCT O.user_id) / COUNT,1) as puchased_ratio
FROM online_sale O
JOIN (
SELECT user_id,
count(*) over() AS COUNT
FROM user_info
WHERE DATE_FORMAT(joined, '%Y') = '2021'
) B
ON O.user_id = B.user_id
GROUP BY year, month
ORDER BY year, month;
- count(*) over() AS ~~ 전체 총합을 테이블에 입력 가능!!