문제


정답
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절을 먼저 작성한다. 이 후 REST_INFO 테이블에서 FAOVIRTES가 가장 큰 식당을 찾아야 한다.
- 서브쿼리를 사용하지 않으면 FOOD_TYPE 은 같지만 REST_NAME
이 다른 행을 구별하지 못한다.
- IN절 안에서 FAVORITES가 최대인 REST_NAME 을 찾는다.
- WHERE (FOOD_TYPE, FAVORITES) 을 이용해 주요 쿼리는 각 FOOD_TYPE
및 해당 FOOD_TYPE에서의 최대 FAVORITES값을 가진 행에 대해 조건을 적용한다. 이렇게 함으로써 최대 인기를 가진 식당에 대한 정보만 포함하게 한다.