REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
-- 음식종류별 > 즐겨찾기 수가 가장 많은 식당
SELECT
FOOD_TYPE,
REST_ID,
REST_NAME,
MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
;
웨..?
-> GROUP BY 후 그냥 MAX를 해버리는 이는 최대값이 아니라 테이블의 최상단 값을 가져와서 서브쿼리로 최대 값을 따로 찾아줘야 한다......
https://school.programmers.co.kr/questions/38854
SELECT
FOOD_TYPE,
REST_ID,
REST_NAME,
FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES)
IN (SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE)
ORDER BY FOOD_TYPE DESC
;
MAX()함수만으로는 그룹화된 데이터에서 정확히 어떤 행이 최대값인지 알 수 없기 때문에 서브쿼리로 정확한 최대값을 포함하는 행을 조회하는 과정이 필요하다.