코딩테스트/SQL
[MySQL] 즐겨찾기가 가장 많은 식당 정보 출력하기
rlatotquf45
2024. 10. 6. 14:15
728x90
반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/131123문제 요약
목표:
REST_INFO 테이블에서 음식 종류(FOOD_TYPE)별로 즐겨찾기 수(FAVORITES)가 가장 많은 식당의 정보를 조회하는 SQL 쿼리를 작성하는 것.
풀이 방법
이 문제는 각 음식 종류별로 가장 인기가 많은(즐겨찾기 수가 많은) 식당을 조회하는 SQL 쿼리를 요구하며, 이를 서브쿼리와 group by 를 사용해서 음식 종류를 기준으로 내림차순으로 정렬해야 합니다.
오답 코드
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
이렇게 풀면 각 음식 종류별로 즐겨찾기 수가 가장 큰 값을 반환하지만, 이 최대 값이랑 매칭되 REST_ID, REST_NAME을 정확하게 못가져옴.
정답 코드
SELECT T1.FOOD_TYPE, T1.REST_ID, T1.REST_NAME, T1.FAVORITES
FROM REST_INFO AS T1
JOIN (SELECT FOOD_TYPE, MAX(FAVORITES) AS T2_MAX
FROM REST_INFO
GROUP BY FOOD_TYPE) AS T2
ON T1.FOOD_TYPE = T2.FOOD_TYPE AND T1.FAVORITES = T2.T2_MAX
ORDER BY FOOD_TYPE DESC
새롭게 배운 내용
- MAX, MIN 등의 함수들은 값에만 적용해서 반환 하기 때문에, 다른 컬럼 값들과 매칭해서 반환하기 위해선 서브쿼리 같은 다른 조건들이 필요함.
728x90
반응형