https://school.programmers.co.kr/learn/courses/30/lessons/131534 ๋ฌธ์ : ์ํ์ ๊ตฌ๋งคํ ํ์ ๋น์จ ๊ตฌํ๊ธฐ Lv.5 ์ฒด๊ฐ Level : โ โ โ ์ธ์ด : MySQL Review: ๋ฌธ์ ์ดํด๋ ์กฐ๊ฑด์ฒ๋ฆฌ๊ฐ ์ ๋ฐ์ ์ผ๋ก ์ด๋ ค์ ๋ค. |
๐ก 2021๋ ์ ๊ฐ์ ํ ์ ์ฒด ํ์๋ค
WITH CTE AS (
SELECT COUNT(*) AS C_2021
FROM USER_INFO
WHERE YEAR(JOINED) = 2021)
๐ก๋ , ์ ๋ณ
ํ ์ด๋ธ์ ๋ฐ๋ก 2021๋ ์ ๊ฐ์ ํ ํ์๋ค + YEAR / MONTH ๋ก ๊ทธ๋ฃนํ
SELECT *
FROM
ONLINE_SALE, CTE
WHERE USER_ID IN (
SELECT USER_ID
FROM USER_INFO
WHERE YEAR(JOINED) = 2021)
GROUP BY
YEAR(SALES_DATE), MONTH(SALES_DATE)
๐ก ์ํ์ ๊ตฌ๋งคํ ํ์์ ๋น์จ(=2021๋ ์ ๊ฐ์ ํ ํ์ ์ค ์ํ์ ๊ตฌ๋งคํ ํ์์ / 2021๋ ์ ๊ฐ์ ํ ์ ์ฒด ํ์ ์)
COUNT(DISTINCT USER_ID) AS PURCHASED_USERS,
ROUND((COUNT(DISTINCT USER_ID) / C_2021), 1) AS Ratio
`DISTINCT` ๋ฅผ ํด์ค์ผ ์ค๋ณต ์ฌ์ฉ์ ๊ฐ ์ฌ๋ผ์ง๋ค. (์ฌ๋ฌ๋ฒ ๊ตฌ๋งคํ ์ฌ๋๋ค์ ์ ์ธ์์ผ์ผํจ)
WITH CTE AS (
SELECT COUNT(*) AS C_2021
FROM USER_INFO
WHERE YEAR(JOINED) = 2021)
#2021 ์ ์ฒด ์ฌ์ฉ์์
SELECT
YEAR(SALES_DATE),
MONTH(SALES_DATE),
COUNT(DISTINCT USER_ID) AS PURCHASED_USERS, #๊ตฌ๋งค์
ROUND((COUNT(DISTINCT USER_ID) / C_2021), 1) AS Ratio #๋น์จ
FROM
ONLINE_SALE, CTE
WHERE USER_ID IN (
SELECT USER_ID
FROM USER_INFO
WHERE YEAR(JOINED) = 2021) # USER_ID ๋ 2021 ๋ก ์ ํ
GROUP BY 1,2
ORDER BY
YEAR(SALES_DATE) ASC, MONTH(SALES_DATE) ASC;