SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, B.FAVORITES
FROM REST_INFO AS A
INNER JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE) as B
ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES = B.FAVORITES
ORDER BY 1 DESC;
풀이
진짜 간단한문제다!! 하면서 무지성으로 깝치며 풀었다가 틀린 문제다... 처음에는 아래와 같이 풀었었다.
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY 1 DESC;
근데 이렇게 풀게 되면 FAVORITES 자체는 FOOD_TYPE별 max값이 잘 나오지만 REST_ID, REST_NAME는 그룹 조건에 없기 때문에 랜덤값이 나와 오류가 발생한다. 때문에 INNER JOIN 안에 서브쿼리로 따로 MAX(FAVORITES)를 뽑아주고 셀프 조인을 통해 확실하게 행을 선별해주었다.