알고리즘
[SQL]프로그래머스 Lv.3 즐겨찾기가 가장 많은 식당 정보 출력하기
truezero
2023. 8. 7. 18:10
✅ 코드
SELECT T2.FOOD_TYPE AS FOOD_TYPE
, T2.REST_ID AS REST_ID
, T2.REST_NAME AS REST_NAME
, T2.FAVORITES AS FAVORITES
FROM (SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE) AS T1
INNER JOIN REST_INFO AS T2 ON T1.FOOD_TYPE = T2.FOOD_TYPE
AND T1.FAVORITES = T2.FAVORITES
ORDER BY FOOD_TYPE DESC;
서브쿼리를 사용한 풀이입니다.
🔎 참고
SELECT FOOD_TYPE
, REST_ID
, REST_NAME
, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC;
위 코드가 통과되지 않는 이유는 FOOD_TYPE, REST_ID, REST_NAME은 그룹화 이후 첫번째 행에 위치한 레코드에서 해당 값들을 가져오지만 MAX(FAVORITES)는 각 그룹별 최대값을 가져오기 때문입니다.
다시 말해서 첫 3개의 값들과 마지막 값은 동일한 레코드에서 가져온 값이 아니게 됩니다.