๐Ÿค– ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.3 - ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ (rank() over)

seoyeun 2022. 11. 1. 13:11

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

 

 

# Solution

-> ๊ฐ food type ๋ณ„๋กœ favorites ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๊ฒƒ์„ list up ํ•ด์•ผํ•˜๋ฏ€๋กœ

rank() over ( partition by ~ order by~ ) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์œ„๋ฅผ ๋จผ์ € ์„ธ์šฐ๊ณ  1์œ„๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM (
    SELECT *, RANK() OVER (PARTITION BY A.FOOD_TYPE ORDER BY A.FAVORITES DESC) AS RA
    FROM REST_INFO A
) B
WHERE B.RA = 1
ORDER BY FOOD_TYPE DESC

 

 

 

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

 

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

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

programmers.co.kr