๋ฌธ์ ์ค๋ช
๋ค์์ ์๋น์ ์ ๋ณด๋ฅผ ๋ด์ REST_INFO ํ ์ด๋ธ์ ๋๋ค. REST_INFO ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL์ ์๋น ID, ์๋น ์ด๋ฆ, ์์ ์ข ๋ฅ, ์กฐํ์, ์ฆ๊ฒจ์ฐพ๊ธฐ์, ์ฃผ์ฐจ์ฅ ์ ๋ฌด, ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ๋ต
SELECT F2.FOOD_TYPE, F2.REST_ID, F2.REST_NAME, F2.FAVORITES
FROM (
SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
) AS F1 INNER JOIN REST_INFO AS F2 ON F1.FOOD_TYPE = F2.FOOD_TYPE AND F1.FAVORITES = F2.FAVORITES
ORDER BY FOOD_TYPE DESC
์คํ ๊ฒฐ๊ณผ

๋ฌธ์ ํ์ด
FOOD-TYPE์ ๋์ผํ๋ฐ REST-ID๋ REST-NAME์ด ๋ค๋ฅธ ์ผ์ด์ค๊ฐ ์กด์ฌํด์ MAX(FAVORITES)์ ๊ตฌํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก MAX(),MIN(),SUM() ๊ฐ์ ์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
SELECT์ ์ง๊ณ์ ํ์ํ ์ปฌ๋ผ๋ง ์กด์ฌํ๊ฑฐ๋ ๊ทธ๊ฒ ์๋๋ผ๋ฉด
์ต๋๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด ๋น๊ตํด์ผํ๋ ๊ฐ๋ค๋ก ๋ณ๋์ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผํจ
๊ทธ๋์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ณ๋๋ก ์์ฑํ๋ค.
1. SELECT FOOD_TYPE๊ณผ MAX(FAVORITES)๋ง ์กฐํํ๋ค.
2. FROM REST_INFO REST_INFOํ ์ด๋ธ์์
3. GROUP BY FOOD_TYPE FOOD TYPE๋ณ๋ก ํ์ธ
์ฆ, REST_INFO ํ ์ด๋ธ์์ FOOD TYPE๋ณ๋ก ๊ฐ์ฅ FAVORITES์ด ๋ง์ ์ด์ ์กฐํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด์ REST_INFO ์ ์กฐ์ธ์ ํ๋๋ฐ,
INNER JOIN์ ์ฌ์ฉํ์ฌ ์๋ธ์ฟผ๋ฆฌ์์ ๊ฐ์ ธ์จ ๊ฐ๊ณผ ๊ธฐ์กด์ ํ ์ด๋ธ์ ๊ฐ์์ ๊ณตํต์ ์ผ๋ก ์๋(๊ต์งํฉ) ๋ฐ์ดํฐ๋ง ํฉ์น๋ค.
์๋ธ์ฟผ๋ฆฌ๋ฅผ F1์ผ๋ก REST_INFO๋ฅผ F1์ผ๋ก ํ ๋ ๊ฐ ํ ์ด๋ธ์ ๊ณตํต์ ์ผ๋ก ์กด์ฌํ๋ ์ด์ ์ฎ์ด์ค
=> FOOD_TYPE, FAVORITES
-------------------------------------------------------------------------
SELECT F2.FOOD_TYPE, F2.REST_ID, F2.REST_NAME, F2.FAVORITES
FROM (
SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
) AS F1 INNER JOIN REST_INFO AS F2 ON F1.FOOD_TYPE = F2.FOOD_TYPE AND F1.FAVORITES = F2.FAVORITES
ORDER BY FOOD_TYPE DESC -> FOOD_TYPE ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
----------------------------------------------------------------------------------------
https://school.programmers.co.kr/questions/71228
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr