๐๏ธ ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/131123
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๐ก์กฐ๊ฑด
## REST_INFO : ์๋น ์ ๋ณด
# ์์์ข
๋ฅ๋ณ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น -> ์์ ์ข
๋ฅ, id, ์๋น์ด๋ฆ, ์ฆ๊ฒจ์ฐพ๊ธฐ์ ์กฐํ
# ์์ ์ข
๋ฅ ๋ด๋ฆผ์ฐจ์ DESC
โ๏ธ ๋ด ์ฝ๋
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
โ๏ธ ์์ ํ ์ฝ๋
SELECT T1.FOOD_TYPE, T1.REST_ID, T1.REST_NAME, T1.FAVORITES
FROM REST_INFO T1
JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS T2_MAX
FROM REST_INFO
GROUP BY FOOD_TYPE) T2
ON T1.FOOD_TYPE = T2.FOOD_TYPE AND T1.FAVORITES = T2.T2_MAX
ORDER BY FOOD_TYPE DESC
๐GROUP BY์์ MAX/MIN ์ฌ์ฉํ๊ธฐ
์ฒซ๋ฒ์งธ ์ฝ๋์์ ์ ๋๋ก ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ ์ด์ ๋ GROUP BY์ MAX๋ฅผ ํจ๊ป ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
GROUP BY๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ FOOD_TYPE ๋ณ๋ก ํ๋์ ํ์ ๋ฐํํ๊ฒ ๋๋๋ฐ ์ด๋ REST_ID์ REST_NAME์ด ๋จ์ผํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ๋ก ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
SELECT FOOD_TYPE, MAX(FAVORITES) AS T2_MAX
FROM REST_INFO
GROUP BY FOOD_TYPE
- REST_INFO ํ ์ด๋ธ์์ FOOD_TYPE ๋ณ๋ก FAVORITES์ ์ต๋๊ฐ์ ๊ตฌํ๋ค
- GROUP BY FOOD_TYPE ์ ํตํด ์์ ์ข ๋ฅ๋ณ๋ก ๊ทธ๋ฃน -> MAX(FAVORITES)๋ฅผ ํตํด ๊ฐ ์์ ์ข ๋ฅ์์ ๊ฐ์ฅ ํฐ 'FAVORITES'๊ฐ์ ์ ํ
- ํด๋น ์ฟผ๋ฆฌ๋ฅผ ํตํด T2 ํ ์ด๋ธ์์ ๊ฐ ์์ ์ข ๋ฅ๋ณ๋ก ์ต๊ณ ์ธ๊ธฐ๋ 'FAVORITES'๋ฅผ ๊ฐ์ง ๊ฐ์ ๋ด๊ณ ์๋ค.
SELECT T1.FOOD_TYPE, T1.REST_ID, T1.REST_NAME, T1.FAVORITES
FROM REST_INFO T1
JOIN (์๋ธ์ฟผ๋ฆฌ T2) ON ์กฐ๊ฑด
ORDER BY FOOD_TYPE DESC
- T1๊ณผ T2๋ฅผ ์กฐ์ธํ์ฌ ๊ฐ ์์ ์ข ๋ฅ๋ณ๋ก ๊ฐ์ฅ ๋์ FAVORITES ๊ฐ์ ๊ฐ์ง ๋ ์ฝ๋๋ง ์ ํํ๊ฒ ๋๋ค.
๐ ์ค๋์ ํ๊ธฐ
GROUP UP์์ ์ง๊ณ๋์ง ์์ ์ปฌ๋ผ์ ํจ๊ป ์ ํํ๋ ค๋ฉด ์๋ธ์ฟผ๋ฆฌ๋ ์กฐ์ธ์ ์ฌ์ฉํด์ ์กฐ๊ฑด์ ๋ง๋ ํน์ ํ์ ์๋กญ๊ฒ ์ ํํด์ผํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค.