SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM (SELECT FOOD_TYPE, REST_ID, REST_NAME, SUM(FAVORITES) FAVORITES
FROM REST_INFO
GROUP BY REST_ID
ORDER BY FOOD_TYPE DESC, FAVORITES DESC) RI
GROUP BY FOOD_TYPE
문제에서 음식종류별로 즐겨찾기 수가 가장 많은 식당의 정보를 출력하라고 되어있어서 처음부터 FOOD_TYPE을 GROUP BY 로 작성했는데, 생각해보니 해당 테이블에서 우선적으로 고유 음식점 ID별 즐겨찾기 수를 구한 다음 → FOOD_TYPE별 가장 높은 즐겨찾기 수를 가진 음식점의 정보를 출력하는 것이 맞는 순서라고 생각했다.
그래서 일단 GROUP BY 와 SUM 으로 음식점마다 즐겨찾기 수를 구하고 정렬한 뒤, SELECT 에서 DISTINCT를 이용해 음식종류의 고유값을 구하려고 했으나 결과가 동일했다.
그래서 FROM절의 SUB QUERY를 이용해 출력했던 값을 다시 FOOD_TYPE으로 GROUP BY 해서 작성했고, 원하는 결과가 출력될 수 있었다.
'SQL' 카테고리의 다른 글
programmers : 중복 제거하기 (0) | 2023.01.17 |
---|---|
programmers : 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.01.16 |
ORACLE 모든 테이블 확인 (0) | 2023.01.13 |
programmers : 진료과별 총 예약 횟수 출력하기 (0) | 2023.01.13 |
programmers : 5월 식품들의 총매출 조회하기 (0) | 2023.01.13 |