[SQL] ํ๋ก๊ทธ๋๋จธ์ค LV.3 - ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น ์ ๋ณด ์ถ๋ ฅํ๊ธฐ (rank() over)
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