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

코린·2023년 10월 25일
0

알고리즘

목록 보기
36/44
post-thumbnail

문제

🧐 문제 풀이

FOOD_TYPE으로 그룹을 짓고 SELECT 할 때 MAX(FAVORITES)을 이용하면 풀릴 것이라고 생각했습니다!

SELECT FOOD_TYPE , REST_ID , REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
FOOD_TYPEREST_IDREST_NAMEFAVORITES
한식00001은돼지식당734
중식00015만정20
일식00002하이가쯔네230
양식00003따띠따띠뜨102
분식00008애플우스151

결과가 위와 같이 나왔습니다.

일식00002하이가쯔네112

이것으로 답이 다릅니다.

위에 쓴 코드는 GROUP BY로 FOOD_TYPE 별로 그룹을 짓습니다. 허나 이때 FAVORITES 들 중 최대여야 하기 때문에 MAX를 써줍니다. 근데 FAVORITES은 그 그룹중 가장 최대값으로 들어가게 되지만 나머지값들은 그냥 첫번째로 오는 값이 들어가게 됩니다.

따라서 위와 같이 구현하면 안됩니다. 서브쿼리를 이용해서 구현해줍니다. FOOD_TYPE 과 FAVORITES를 서브쿼리에서 받아옵니다. 이때 FOOD_TYPE 별로 그룹을 지어줍니다. 이때 MAX(FAVORITES)를 해줍니다. 이름을 따로 받아오지 않고 음식 분류와 최대 좋아요 수만을 받아서 이 정보를 이용해서 메인 쿼리에서 값을 추출해냅니다.

✌️ 결과 코드

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
profile
안녕하세요 코린입니다!

0개의 댓글