[MySQL/프로그래머스]즐겨찾기가 가장 많은 식당 정보 출력하기

딩나·2023년 10월 26일

SQL

목록 보기
5/13

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_TYPEFAVORITES

이런 형태의 표를 하나 그려준다고 생각.

  1. 1에서 추출한 값을 조건으로 삼고 식당아이디와 식당이름을 추출한다.
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;

0개의 댓글