MapleStory Finger Point

๐Ÿƒ‍โ™€๏ธprogrammers/SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL] Lv.5 ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์› ๋น„์œจ ๊ตฌํ•˜๊ธฐ

HYEJU01 2025. 3. 26. 15:18

 

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;