https://school.programmers.co.kr/learn/courses/30/lessons/131123
REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.
처음에 문제를 보고 FOOD_TYPE만 GROUP BY 절로 묶어서 풀었고 정답도 나오길래 맞은 줄 알았더니 틀렸다.
알고보니 GROUP BY로 묶으면 가장 상단에 있는 데이터들을 임의로 가져오는데 우연히 정답이랑 결과가 같은거였지, 즐겨찾기가 가장 많은 식당은 아니었다.
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;
- 서브쿼리로 음식 종류별 즐겨찾기 수 최댓값을 찾는다.
- 전체 테이블을 돌면서 1번에서 찾은 FOOD_TYPE, FAVORITES 같은 식당을 찾는다.
- FOOD_TYPE 내림차순 정렬
참고)
https://monawa.tistory.com/126
https://jaehwaseo.tistory.com/24