즐겨찾기가 가장 많은 식당 정보 출력하기 (LEVEL3)
음식종류별로 즐겨찾기수가 가장 많은 식당 출력
내림차순 정렬
틀린코드
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
MAX(FAVORITES) 는 각 음식별 제일 높은 수의 즐겨찾기 출력되지만, 그 점수가 REST_ID, REST_NAME의 FAVORITES 값이 아니다. 음식별로 기존 테이블 가장 상단에 있는 열을 가져온다.
정답 코드
FOOD_TYPE 별로 MAX(FAVORITES) 를 구하고 이 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;
SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
MEMO
- 서브쿼리의 사용이유는 실행순서이다.
- 실행순서는 FROM > WHERE > GROUP BY > HAVING > SELECT > LIMIT
(MAX 를 실행하는 것은 SELECT 이다. GROUP BY 에서 각 음식별 상단에 있는 가게 정보를 선택한 한 후이다. 즉, SELECT 은 이미 테이블은 완성되어 있고 해당 행만 가장 높은 추천수를 따로 검색한 것이다. )
참고
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[MYSQL 13] 성분으로 구분한 아이스크림 총 주문량 (0) | 2024.09.06 |
---|---|
[JAVA 10] 이중우선순위큐 (0) | 2024.09.04 |
[JAVA 08] 네트워크 (0) | 2024.09.03 |
[MYSQL 11] 5월 식품들의 총매출 조회하기 (1) | 2024.09.03 |
[MYSQL 10] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2024.09.03 |