SQL 알고리즘 코드카타

SQL 알고리즘 코드카타 16일차(3) 26.01.14(수)

nom_de_plume 2026. 1. 14. 09:22

부제:

즐겨찾기가 가장 많은 식당 정보 출력하기, 레벨 3

 

1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131123
2. 정답 코드: 

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
)
ORDER BY FOOD_TYPE DESC;


3. 오류 상황:

SELECT
    food_type,
    rest_id,
    rest_name,
    favorites
from rest_info
group by food_type
having max(favorites)
order by food_type desc

=> group by 와 컬럼의 불일치

=> having 절 오용
4. 시도 방법: 서브 쿼리 활용
5. 최종 문제 해결 방법: WHERE 절에서 음식 종류별 최대 즐겨찾기 수 리스트를 먼저 서브쿼리에서 만들어 일치하는 항만 필터링