본문 바로가기

알고리즘 공부 및 문제 풀이/프로그래머스(PRO)

[pro] 프로그래머스 SQL level3 즐겨찾기가 가장 많은 식당 정보 출력하기 - GROUP BY

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/131123

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[풀이]

GROUP BY와 서브쿼리를 이용한다. 

이때 그냥 HAVING MAX(FAVORITES) 을 하게 되면 이미 GROUP BY를 한 결과값(아무 조건이 없을 때 가장 상단에 위치한 것이 선택됨) 중에서 HAVING 을 적용하는 것이기 때문에 정답이 안된다!!

 

[코드]

 

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;