DB/SQL

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

씩씩한 IT블로그 2022. 11. 26. 17:54
반응형

문제

음식 종류별 즐겨찾기 수가 최대인 값들을 구하는 문제.

 

오답

SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITES
FROM (SELECT *, max(FAVORITES) as max_favorites FROM REST_INFO group by FOOD_TYPE) AS A
order by FOOD_TYPE DESC

위 쿼리가 틀린 이유는 서브쿼리(SELECT *, max(FAVORITES) as max_favorites FROM REST_INFO group by FOOD_TYPE)에서 SELECT문을 "*, max(FAVORITES)"로 하면 max(FAVORITES)컬럼에는 FOOD_TYPE별 최댓값이 들어가지만, 나머지 컬럼들에는 FOOD_TYPE별 첫번째 ROW의 값들이 들어가게 된다.

따라서 정답이 될 수 없다.

 

정답

-- 코드를 입력하세요
SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITES
FROM REST_INFO AS A
RIGHT JOIN 
(SELECT FOOD_TYPE, max(FAVORITES) as max_favorites FROM REST_INFO group by FOOD_TYPE) AS B
on A.FOOD_TYPE=B.FOOD_TYPE and A.FAVORITES=B.max_favorites
order by FOOD_TYPE DESC
반응형