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

2024. 3. 25. 01:12ยท ๐Ÿ’ฏ Coding Test/SQL ํ…Œ์ŠคํŠธ

1) ๋ฌธ์ œ ์„ค๋ช…

  • ๋‹ค์Œ์€ ์–ด๋А ์˜๋ฅ˜ ์‡ผํ•‘๋ชฐ์— ๊ฐ€์ž…ํ•œ ํšŒ์› ์ •๋ณด๋ฅผ ๋‹ด์€ USER_INFO ํ…Œ์ด๋ธ”๊ณผ ์˜จ๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ์ •๋ณด๋ฅผ ๋‹ด์€ ONLINE_SALE ํ…Œ์ด๋ธ” ์ž…๋‹ˆ๋‹ค.

 

  • USER_INFO ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ USER_ID, GENDER, AGE, JOINED๋Š” ๊ฐ๊ฐ ํšŒ์› ID, ์„ฑ๋ณ„, ๋‚˜์ด, ๊ฐ€์ž…์ผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
     
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, ํŒ๋งค๋Ÿ‰, ํŒ๋งค์ผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
     
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 ์กฐํ•ฉ์— ๋Œ€ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ํŒ๋งค ๋ฐ์ดํ„ฐ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

2) ๋ฌธ์ œ

  • USER_INFO ํ…Œ์ด๋ธ”๊ณผ ONLINE_SALE ํ…Œ์ด๋ธ”์—์„œ 2021๋…„์— ๊ฐ€์ž…ํ•œ ์ „์ฒด ํšŒ์›๋“ค ์ค‘ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์›์ˆ˜์™€ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์›์˜ ๋น„์œจ(=2021๋…„์— ๊ฐ€์ž…ํ•œ ํšŒ์› ์ค‘ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์›์ˆ˜ / 2021๋…„์— ๊ฐ€์ž…ํ•œ ์ „์ฒด ํšŒ์› ์ˆ˜)์„ ๋…„, ์›” ๋ณ„๋กœ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์›์˜ ๋น„์œจ์€ ์†Œ์ˆ˜์  ๋‘๋ฒˆ์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜๊ณ , ์ „์ฒด ๊ฒฐ๊ณผ๋Š” ๋…„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์‹œ๊ณ  ๋…„์ด ๊ฐ™๋‹ค๋ฉด ์›”์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

3) ์˜ˆ์‹œ

  • ์˜ˆ๋ฅผ ๋“ค์–ด USER_INFO ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ 
       
USER_ID GENDER AGE JOINED
1 1 26 2021-06-01
2 NULL NULL 2021-06-25
3 0 NULL 2021-06-30
4 0 31 2021-07-03
5 1 25 2022-01-09
6 1 33 2022-02-14
  • ONLINE_SALE ์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด
         
ONLINE_SALE_ID USER_ID PRODUCT_ID SALES_AMOUNT SALES_DATE
1 1 54 1 2022-01-01
2 1 3 2 2022-01-25
3 4 34 1 2022-01-30
4 6 253 3 2022-02-03
5 2 31 2 2022-02-09
6 5 35 1 2022-02-14
7 5 57 1 2022-02-18
  • 2021๋…„์— ๊ฐ€์ž…ํ•œ ํšŒ์›์€ USER_ID๊ฐ€ 1, 2, 3, 4 ์ธ ํšŒ์›๋“ค๋กœ ์ด 4๋ช… ์ž…๋‹ˆ๋‹ค.

 

  • ONLINE_SALE ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ํšŒ์›๋“ค์— ๋Œ€ํ•œ ํŒ๋งค ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
         
ONLINE_SALE_ID USER_ID PRODUCT_ID SALES_AMOUNT SALES_DATE
1 1 54 1 2022-01-01
2 1 3 2 2022-01-25
3 4 34 1 2022-01-30
5 2 31 2 2022-02-09
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋…„, ์›” ๋ณ„๋กœ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์›์ˆ˜์™€ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์›์˜ ๋น„์œจ์„ ๊ตฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
       
YEAR MONTH PUCHASED_USERS PUCHASED_RATIO
2022 1 2 0.5
2022 2 1 0.3

4) ํ’€์ด

SELECT 
    YEAR(SALES_DATE) AS "YEAR",
    MONTH(SALES_DATE) AS "MONTH",
    COUNT(DISTINCT USER_ID) AS "PUCHASED_USERS",
       ROUND(
           COUNT(DISTINCT USER_ID) / (SELECT COUNT(*) 
                                      FROM USER_INFO
                                      WHERE YEAR(JOINED) = 2021) 
           , 1) AS "PUCHASED_RATIO"
FROM ONLINE_SALE
WHERE USER_ID IN (SELECT USER_ID
                  FROM USER_INFO
                  WHERE YEAR(JOINED) = 2021)
GROUP BY YEAR, MONTH
ORDER BY YEAR, MONTH;

 

[Reference]

  • https://school.programmers.co.kr/learn/courses/30/lessons/131534
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋ฐ˜์‘ํ˜•

'๐Ÿ’ฏ Coding Test > SQL ํ…Œ์ŠคํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 1) - ๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ์ฐฝ๊ณ  ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ  (0) 2024.03.26
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 3) - ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„ ๋Œ€์–ด ์ฐพ๊ธฐ  (2) 2024.03.25
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 2) - ์—ฐ๋„ ๋ณ„ ํ‰๊ท  ๋ฏธ์„ธ๋จผ์ง€ ๋†๋„ ์กฐํšŒํ•˜๊ธฐ  (0) 2024.03.21
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 3) - ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ์˜ ์ฒจ๋ถ€ํŒŒ์ผ ์กฐํšŒํ•˜๊ธฐ  (0) 2024.03.21
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 2) - ์กฐ๊ฑด์— ๋งž๋Š” ์•„์ดํ…œ๋“ค์˜ ๊ฐ€๊ฒฉ์˜ ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ  (0) 2024.03.13
'๐Ÿ’ฏ Coding Test/SQL ํ…Œ์ŠคํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 1) - ๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ์ฐฝ๊ณ  ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 3) - ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„ ๋Œ€์–ด ์ฐพ๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 2) - ์—ฐ๋„ ๋ณ„ ํ‰๊ท  ๋ฏธ์„ธ๋จผ์ง€ ๋†๋„ ์กฐํšŒํ•˜๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 3) - ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ์˜ ์ฒจ๋ถ€ํŒŒ์ผ ์กฐํšŒํ•˜๊ธฐ
KR_DEV
KR_DEV
๊ณต๋ถ€์šฉ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. :)
๋ฐ˜์‘ํ˜•
KR_DEV
All about IT
KR_DEV
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์ „์ฒด (139)
    • ๐Ÿ“š ์—ฐ์žฌ ์‹œ๋ฆฌ์ฆˆ (19)
      • ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ฉด ์ข‹์„ ๋‚ด์šฉ (11)
      • ์ž์ฃผ ์“ฐ์ด๋Š” IT ์šฉ์–ด ์ •๋ฆฌ (6)
      • ์žก๋‹คํ•œ IT ์ •๋ณด (2)
    • ๐ŸŽฎ Toy Project (1)
    • ๐Ÿ’ฏ Coding Test (35)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ (14)
      • SQL ํ…Œ์ŠคํŠธ (21)
    • ๐Ÿ’ป Computer Science (14)
      • Hardware (4)
      • Operating System (3)
      • Network (4)
      • Database (3)
      • Data Structures (0)
      • Algorithms (0)
    • ๐ŸŒ Front End (0)
      • HTML5 (0)
      • CSS3 (0)
    • ๐Ÿ‘จโ€๐Ÿ’ป Back End (30)
      • Spring (5)
      • MySQL (12)
      • Redis (3)
      • OOP (0)
      • Design Pattern (0)
      • HTTP (2)
      • Servlet (1)
      • JDBC (7)
      • MSA (0)
    • ๐Ÿ› ๏ธ Devops (12)
      • HAProxy (1)
      • Linux (6)
      • Virtual Machine (4)
      • Container (0)
      • Ansible (1)
    • ๐Ÿง Programming (20)
      • Java (10)
      • Python (10)
    • ๐ŸŒฅ๏ธ Cloud (2)
      • AWS (1)
      • Oracle Cloud (0)
    • ๐Ÿ’พ Storage (5)
      • MiniO (3)
    • ๐Ÿ” Security & Hacking (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

  • ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค ํ†ต๊ณผํ–ˆ๋„ค์š” !!!
  • ์•ˆ๋…•ํ•˜์„ธ์š”.

์ธ๊ธฐ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
KR_DEV
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 5) - ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•œ ํšŒ์› ๋น„์œจ ๊ตฌํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.