
https://school.programmers.co.kr/learn/courses/30/lessons/131123
SELECT FOOD_TYPE,
REST_ID,
REST_NAME,
MAX(favorites) AS FAVORITES
FROM rest_info
GROUP BY food_type;
이렇게 하면 각 음식유형 별 즐겨찾기의 최대값은 구할 수 있지만 즐겨찾기 최대인 해당 REST_ID, REST_NAME은 구할 수 없다.
MAX(favorites)와 나머지 열에 대한 관계를 정의해주지 않았기 때문이다.
💡풀이
1. 먼저 음식타입별 최대 즐겨찾기 수를 구해준다.
SELECT FOOD_TYPE,
MAX(favorites) AS FAVORITES
FROM rest_info
GROUP BY food_type
| FOOD_TYPE | FAVORITES |
|---|---|
이런 형태의 표를 하나 그려준다고 생각.
WHERE (FOOD_TYPE, FAVORITES) IN
(SELECT FOOD_TYPE,
MAX(favorites) AS FAVORITES
FROM rest_info
GROUP BY food_type)
SELECT FOOD_TYPE,
REST_ID,
REST_NAME,
FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN
(SELECT FOOD_TYPE,
MAX(favorites) AS FAVORITES
FROM rest_info
GROUP BY food_type)
ORDER BY FOOD_TYPE DESC;