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
반응형
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.10.09 |
---|---|
[MySQL] 대장균의 크기에 따라 분류하기 1 (0) | 2024.10.09 |
[MySQL] 부서별 평균 연봉 조회하기 (0) | 2024.10.09 |
[MySQL] 조건에 맞는 사용자 정보 조회하기 (2) | 2024.10.07 |
[MySQL] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.10.06 |