https://school.programmers.co.kr/learn/courses/30/lessons/131123
그냥 보기에는 간단한 문제여서 group by 를 사용하여 max()로 출력해주었지만 답이 틀리게 나온다.
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
왜 MAX()는 안될까??
그 해답은 아래의 글에 작성되어있다.
https://school.programmers.co.kr/learn/courses/30/lessons/131123
결론은 max()로 큰 값이 나오는 것이 아니라 그냥 맨 위의 값을 출력하는 거였다....
그렇다면 max()가 아니라 서브쿼리를 사용해서 즐찾이 가장 큰 값을 추려내야 한다.
일단 테이블의 모든 쿼리를 SELECT하고 WHERE절을 통해서 가장 큰 값을 서브쿼리로 뽑아내고 비교해서 출력을 해야한다.
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
'Algorithm > 프로그래머스' 카테고리의 다른 글
[SQL] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2022.11.25 |
---|---|
[SQL] 보호소에서 중성화한 동물 (0) | 2022.11.25 |
[SQL] 없어진 기록 찾기 (0) | 2022.11.25 |
[SQL] 서울에 위치한 식당 목록 출력하기 (0) | 2022.11.25 |
[SQL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2022.11.24 |