Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

์ธ” 2022. 12. 29. 16:04

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

       ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต,   

       https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.


โ–  ๋ฌธ์ œ

๋ฌธ์ œ์„ค๋ช…

๋‹ค์Œ์€ ์‹๋‹น์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ REST_INFO ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. REST_INFO ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING _LOT, ADDRESS, TEL์€ ์‹๋‹น ID, ์‹๋‹น ์ด๋ฆ„, ์Œ์‹ ์ข…๋ฅ˜, ์กฐํšŒ์ˆ˜, ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜, ์ฃผ์ฐจ์žฅ ์œ ๋ฌด, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column name Type Nullable
REST_ID VARCHAR(5) FALSE
REST_NAME VARCHAR(50) FALSE
FOOD_TYPE VARCHAR(20) TRUE
VIEWS NUMBER TRUE
FAVORITES NUMBER TRUE
PARKING_LOT VARCHAR(1) TRUE
ADDRESS VARCHAR(100) TRUE
TEL VARCHAR(100) TRUE

 

๋ฌธ์ œ

REST_INFO ํ…Œ์ด๋ธ”์—์„œ ์Œ์‹์ข…๋ฅ˜๋ณ„๋กœ ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น์˜ ์Œ์‹ ์ข…๋ฅ˜, ID, ์‹๋‹น ์ด๋ฆ„, ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์Œ์‹ ์ข…๋ฅ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.


โ–  ํ’€์ด

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

REST_INFO ํ…Œ์ด๋ธ”์—์„œ ์Œ์‹์ข…๋ฅ˜๋ณ„๋กœ ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น์˜ ์Œ์‹ ์ข…๋ฅ˜, ID, ์‹๋‹น ์ด๋ฆ„, ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๋ฅผ ์กฐํšŒ

> ์Œ์‹์ข…๋ฅ˜๋ณ„(FOOD_TYPE)๋กœ ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€(MAX) 

    ์กฐ๊ฑด์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด (์กฐ๊ฑด1) ์Œ์‹ ์ข…๋ฅ˜๋ณ„๋กœ ๋ถ„๋ฅ˜๋œ ์ƒํƒœ์—์„œ

                                           (์กฐ๊ฑด2) ์ฆ๊ฒจ์ฐพ๊ธฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น๋งŒ ์กฐํšŒ

๊ฒฐ๊ณผ๋Š” ์Œ์‹ ์ข…๋ฅ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.                                > ์ •๋ ฌ์กฐ๊ฑด1

 

๐Ÿงต ํ’€์ด1)

์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์Œ์‹ ์ข…๋ฅ˜๋ณ„ ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜ ์ตœ๋Œ€๊ฐ’๊ณผ ๊ฐ’์ด ๊ฐ™์€ ์‹๋‹น๋“ค๋งŒ ์ถœ๋ ฅํ•ด๋ณด์•˜๋‹ค.

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
 FROM REST_INFO RI1
 WHERE FAVORITES = (SELECT MAX(FAVORITES)
                     FROM REST_INFO RI2
                     WHERE RI1.FOOD_TYPE = RI2.FOOD_TYPE
                     )
 ORDER BY 1 DESC

 

 

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


๐Ÿงต  ํ’€์ด2) UNION

(๊ฐ€๋Šฅํ–ˆ๋˜ ์ด์œ ) : FOOD_TYPE ์ข…๋ฅ˜๊ฐ€ ์ ๊ณ , FAVORITES ์ตœ๋Œ€๊ฐ’ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•ด์„œ ๋‚˜์—ด์ด ๊ฐ€๋Šฅํ–ˆ๋Š”๋ฐ ๋” ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ฐพ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
 FROM REST_INFO
 WHERE FOOD_TYPE = 'ํ•œ์‹'
 ORDER BY 4 DESC
 LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
 FROM REST_INFO
 WHERE FOOD_TYPE = '์ค‘์‹'
 ORDER BY 4 DESC
 LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
 FROM REST_INFO
 WHERE FOOD_TYPE = '์ผ์‹'
 ORDER BY 4 DESC
 LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
 FROM REST_INFO
 WHERE FOOD_TYPE = '์–‘์‹'
 ORDER BY 4 DESC
 LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
 FROM REST_INFO
 WHERE FOOD_TYPE = '๋ถ„์‹'
 ORDER BY 4 DESC
 LIMIT 1)