Finn.ian
article thumbnail

πŸ“– 문제 μ„€λͺ…

λ‹€μŒμ€ μ–΄λŠ 의λ₯˜ μ‡Όν•‘λͺ°μ— κ°€μž…ν•œ νšŒμ› 정보λ₯Ό 담은 USER_INFO ν…Œμ΄λΈ”κ³Ό 온라인 μƒν’ˆ 판맀 정보λ₯Ό 담은 ONLINE_SALE ν…Œμ΄λΈ” μž…λ‹ˆλ‹€. USER_INFO ν…Œμ΄λΈ”μ€ μ•„λž˜μ™€ 같은 ꡬ쑰둜 λ˜μ–΄μžˆμœΌλ©° USER_ID, GENDER, AGE, JOINEDλŠ” 각각 νšŒμ› ID, 성별, λ‚˜μ΄, κ°€μž…μΌμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

USER_INFO

Column name Type Nullable
USER_ID INTEGER FALSE
GENDER TINYINT(1) TRUE
AGE INTEGER TRUE
JOINED DATE FALSE

GENDER μ»¬λŸΌμ€ λΉ„μ–΄μžˆκ±°λ‚˜ 0 λ˜λŠ” 1의 값을 가지며 0인 경우 λ‚¨μžλ₯Ό, 1인 κ²½μš°λŠ” μ—¬μžλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

ONLINE_SALE ν…Œμ΄λΈ”μ€ μ•„λž˜μ™€ 같은 ꡬ쑰둜 λ˜μ–΄μžˆμœΌλ©° ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATEλŠ” 각각 온라인 μƒν’ˆ 판맀 ID, νšŒμ› ID, μƒν’ˆ ID, νŒλ§€λŸ‰, νŒλ§€μΌμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

ONLINE_SALE

Column name Type Nullable
ONLINE_SALE_ID INTEGER FALSE
USER_ID INTEGER FALSE
PRODUCT_ID INTEGER FALSE
SALES_AMOUNT INTEGER FALSE
SALES_DATE DATE FALSE

λ™μΌν•œ λ‚ μ§œ, νšŒμ› ID, μƒν’ˆ ID 쑰합에 λŒ€ν•΄μ„œλŠ” ν•˜λ‚˜μ˜ 판맀 λ°μ΄ν„°λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.

πŸ–Š 문제

USER_INFO ν…Œμ΄λΈ”κ³Ό ONLINE_SALE ν…Œμ΄λΈ”μ—μ„œ 2021년에 κ°€μž…ν•œ 전체 νšŒμ›λ“€ 쀑 μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μˆ˜μ™€ μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μ˜ λΉ„μœ¨(=2021년에 κ°€μž…ν•œ νšŒμ› 쀑 μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μˆ˜ / 2021년에 κ°€μž…ν•œ 전체 νšŒμ› 수)을 λ…„, μ›” λ³„λ‘œ 좜λ ₯ν•˜λŠ” SQL문을 μž‘μ„±ν•΄μ£Όμ„Έμš”.
μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μ˜ λΉ„μœ¨μ€ μ†Œμˆ˜μ  λ‘λ²ˆμ§Έμžλ¦¬μ—μ„œ λ°˜μ˜¬λ¦Όν•˜κ³ , 전체 κ²°κ³ΌλŠ” 년을 κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•΄μ£Όμ‹œκ³  년이 κ°™λ‹€λ©΄ 월을 κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•΄μ£Όμ„Έμš”.

πŸ’‘ μ •λ‹΅

# μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μˆ˜μ™€ μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μ˜ λΉ„μœ¨μ„ λ…„, μ›” λ³„λ‘œ 좜λ ₯
# (λΉ„μœ¨ : 2021년에 κ°€μž…ν•œ νšŒμ› 쀑 μƒν’ˆμ„ κ΅¬λ§€ν•œ νšŒμ›μˆ˜ / 2021년에 κ°€μž…ν•œ 전체 νšŒμ› 수)

SELECT DATE_FORMAT(OS.SALES_DATE, '%Y') AS YEAR
     , DATE_FORMAT(OS.SALES_DATE, '%m') AS MONTH
     , COUNT(DISTINCT UI.USER_ID) AS PUCHASED_USERS
     , ROUND((COUNT(DISTINCT UI.USER_ID)) / (SELECT COUNT(DISTINCT USER_ID) FROM USER_INFO WHERE DATE_FORMAT(JOINED, '%Y') = '2021'), 1) AS PUCHASED_RATIO
  FROM USER_INFO UI
  INNER JOIN ONLINE_SALE OS
          ON UI.USER_ID = OS.USER_ID
  WHERE DATE_FORMAT(UI.JOINED, '%Y') = '2021'
  GROUP BY YEAR
         , MONTH
  ORDER BY YEAR ASC, MONTH ASC

🌟 μ‹€ν–‰ κ²°κ³Ό

YEAR MONTH PUCHASED_USERS PUCHASED_RATIO
2022 01 47 0.3
2022 02 40 0.3
2022 03 6 0.0
profile

Finn.ian

@Finn_

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!

검색 νƒœκ·Έ