WITH VALUE AS (
SELECT DISTINCT YEAR(A.SALES_DATE) AS YEAR, MONTH(A.SALES_DATE) AS MONTH, A.USER_ID
FROM ONLINE_SALE A
JOIN USER_INFO B
ON A.USER_ID = B.USER_ID
WHERE YEAR(B.JOINED) = 2021
)
, JOINED AS (
SELECT COUNT (*) AS USER_COUNT
FROM USER_INFO WHERE YEAR(JOINED) = 2021
)
SELECT V.YEAR, V.MONTH, COUNT(*) AS PUCHASED_USERS,
ROUND((COUNT(*) / (SELECT USER_COUNT FROM JOINED)), 1) AS PURCHASED_RATIO
FROM VALUE V
GROUP BY V.YEAR, V.MONTH
ORDER BY V.YEAR, V.MONTH;
2021년에 가입한 회원 수 파악하기
SELECT DISTINCT YEAR(A.SALES_DATE) AS YEAR, MONTH(A.SALES_DATE) AS MONTH, A.USER_ID
FROM ONLINE_SALE A
JOIN USER_INFO B
ON A.USER_ID = B.USER_ID
WHERE YEAR(B.JOINED) = 2021
2021년에 가입한 사람을 구하면서 한 사람이 같은 년, 월에 두 번 이상 구매할 수 있으므로 중복을 제거해야 했었다. 그래서 DISTINCT
를 사용하였다.
상품 구매 데이터 파악하기
구매 회원 수와 비율 계산
WITH
에 익숙해지기 위해 연습하고 있어서 사용해보았다 :)
이로써 프로그래머스 지금까지 나온 SQL문제들은 모두 풀어보았다!!