Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฃผ๋ฌธ๋Ÿ‰์ด ๋งŽ์€ ์•„์ด์Šคํฌ๋ฆผ๋“ค ์กฐํšŒํ•˜๊ธฐ

์ธ” 2022. 11. 21. 17:09

๐Ÿ“ข ๋ณธ ํฌ์ŠคํŒ…์— ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜๋Š”

       ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต,   
      https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle
์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.

 

 


โ–  ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

 

๋‹ค์Œ์€ ์•„์ด์Šคํฌ๋ฆผ ๊ฐ€๊ฒŒ์˜ ์ƒ๋ฐ˜๊ธฐ ์ฃผ๋ฌธ ์ •๋ณด๋ฅผ ๋‹ด์€ FIRST_HALF ํ…Œ์ด๋ธ”๊ณผ 7์›”์˜ ์•„์ด์Šคํฌ๋ฆผ ์ฃผ๋ฌธ ์ •๋ณด๋ฅผ ๋‹ด์€ JULY ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. FIRST_HALF ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, SHIPMENT_ID, FLAVOR, TOTAL_ORDER๋Š” ๊ฐ๊ฐ ์•„์ด์Šคํฌ๋ฆผ ๊ณต์žฅ์—์„œ ์•„์ด์Šคํฌ๋ฆผ ๊ฐ€๊ฒŒ๊นŒ์ง€์˜ ์ถœํ•˜ ๋ฒˆํ˜ธ, ์•„์ด์Šคํฌ๋ฆผ ๋ง›, ์ƒ๋ฐ˜๊ธฐ ์•„์ด์Šคํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋Ÿ‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. FIRST_HALF ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋Š” FLAVOR์ž…๋‹ˆ๋‹ค. FIRST_HALFํ…Œ์ด๋ธ”์˜ SHIPMENT_ID๋Š” JULYํ…Œ์ด๋ธ”์˜ SHIPMENT_ID์˜ ์™ธ๋ž˜ ํ‚ค์ž…๋‹ˆ๋‹ค.

 

NAME TYPE NULLABLE
SHIPMENT_ID INT(N) FALSE
FLAVOR VARCHAR(N) FALSE
TOTAL_ORDER INT(N) FALSE

 

JULY ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, SHIPMENT_ID, FLAVOR, TOTAL_ORDER ์€ ๊ฐ๊ฐ ์•„์ด์Šคํฌ๋ฆผ ๊ณต์žฅ์—์„œ ์•„์ด์Šคํฌ๋ฆผ ๊ฐ€๊ฒŒ๊นŒ์ง€์˜ ์ถœํ•˜ ๋ฒˆํ˜ธ, ์•„์ด์Šคํฌ๋ฆผ ๋ง›, 7์›” ์•„์ด์Šคํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋Ÿ‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. JULY ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋Š” SHIPMENT_ID์ž…๋‹ˆ๋‹ค. JULYํ…Œ์ด๋ธ”์˜ FLAVOR๋Š” FIRST_HALF ํ…Œ์ด๋ธ”์˜ FLAVOR์˜ ์™ธ๋ž˜ ํ‚ค์ž…๋‹ˆ๋‹ค. 7์›”์—๋Š” ์•„์ด์Šคํฌ๋ฆผ ์ฃผ๋ฌธ๋Ÿ‰์ด ๋งŽ์•„ ๊ฐ™์€ ์•„์ด์Šคํฌ๋ฆผ์— ๋Œ€ํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ณต์žฅ์—์„œ ์•„์ด์Šคํฌ๋ฆผ ๊ฐ€๊ฒŒ๋กœ ์ถœํ•˜๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ™์€ ๋ง›์˜ ์•„์ด์Šคํฌ๋ฆผ์ด๋ผ๋„ ๋‹ค๋ฅธ ์ถœํ•˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

NAME TYPE NULLABLE
SHIPMENT_ID INT(N) FALSE
FLAVOR VARCHAR(N) FALSE
TOTAL_ORDER INT(N) FALSE

 

๋ฌธ์ œ

7์›” ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰๊ณผ ์ƒ๋ฐ˜๊ธฐ์˜ ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰์„ ๋”ํ•œ ๊ฐ’์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์œ„ 3๊ฐœ์˜ ๋ง›์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 


โ–  ํ’€์ด

  ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ  

 

7์›” ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰ + ์ƒ๋ฐ˜๊ธฐ  ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰์„ ๋”ํ•œ๊ฐ’ ์ƒ์œ„ 3์œ„ ๋ง› ์ถœ๋ ฅํ•˜๊ธฐ

 

์ฃผ์˜ํ•œ ์ 

· JOIN ์ „

JULY ํ…Œ์ด๋ธ”์—์„œ๋Š” ์ฃผ๋ฌธ๋Ÿ‰์ด ๋งŽ์•„ ๊ฐ™์€ ๋ง›์˜ ์•„์ด์Šคํฌ๋ฆผ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋‘ ๊ณต์žฅ์—์„œ ์•„์ด์Šคํฌ๋ฆผ ๊ฐ€๊ฒŒ๋กœ ์ถœํ•˜๋ฅผ ์ง„ํ–‰ํ•จ.

> ๋ง›๋ณ„๋กœ TOTAL_ORDER์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ๋ฃนํ•‘ ํ•„์š”.

 

· JOIN ํ›„

๋ง›๋ณ„ ์ƒ๋ฐ˜๊ธฐ ์ด ์ฃผ๋ฌธ๋Ÿ‰๊ณผ 7์›” ๋ง›๋ณ„ ์ฃผ๋ฌธ๋Ÿ‰์˜ ํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ORDER BY์— 2 ์ปฌ๋Ÿผ ์—ฐ์‚ฐ ์ถ”๊ฐ€

์ƒ์œ„ 3๊ฐœ LIMIT ๋ฌธ๋ฒ•์‚ฌ์šฉ

 

JOIN์—์„œ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•  ๊ฒƒ = ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ์™ธ๋ž˜ํ‚ค(FOREIGN KEY)

 

SELECT FH.FLAVOR
 FROM FIRST_HALF FH
 LEFT JOIN (SELECT FLAVOR, SUM(TOTAL_ORDER) TOTAL_ORDER
             FROM JULY
             GROUP BY FLAVOR) JO
 ON FH.FLAVOR = JO.FLAVOR
 ORDER BY FH.TOTAL_ORDER + JO.TOTAL_ORDER DESC
 LIMIT 3

 

 <์žฌํ’€์ด> 2022.01.11 

SELECT FH.FLAVOR
 FROM FIRST_HALF FH
 LEFT JOIN JULY JL
 ON FH.FLAVOR = JL.FLAVOR
 
 GROUP BY 1
 ORDER BY SUM(FH.TOTAL_ORDER + JL.TOTAL_ORDER) DESC
 LIMIT 3