[ORACLE_SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기

이경영·2023년 6월 13일
0

오라클

목록 보기
15/43

프로그래머스 :
https://school.programmers.co.kr/learn/courses/30/lessons/131123

내가 처음에 짠 쿼리 : 안됨 왜일까?

SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE, REST_ID, REST_NAME
ORDER BY FOOD_TYPE DESC

출처 : https://school.programmers.co.kr/questions/38854

GROUP BY 로 묶으면 가장 상단에 있는 데이터를 임의로 가져옴.
SELECT를 해도 최대값을 가져오는 것이 아니라. 그룹화된 테이블 가장 상단을 가져오게 됨. 그래서 서브쿼리로 최댓값을 찾아주는것.
위 쿼리는 운좋게 가장 상단의 값이 일치하지만. 일식은 답과 다름.

정답

SELECT A.FOOD_TYPE, B.REST_ID, B.REST_NAME, A.FAVORITES
FROM (
SELECT DISTINCT(FOOD_TYPE) AS FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO
GROUP BY FOOD_TYPE
) A, REST_INFO B
WHERE A.FOOD_TYPE=B.FOOD_TYPE
AND A.FAVORITES = B.FAVORITES
ORDER BY FOOD_TYPE DESC


또한 id별로 MAX값 추출하는 쿼리 참고 :
https://helloino.tistory.com/120
profile
꾸준히

0개의 댓글