SQL/GROUP BY
[프로그래머스 SQL] Lv.3 - 즐겨찾기가 가장 많은 식당 정보 출력하기
이런개발
2025. 3. 27. 08:48
https://school.programmers.co.kr/learn/courses/30/lessons/131123
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
- 서브 쿼리로 음식 종류별로 그룹핑하여 MAX 키워드로 즐겨찾기수가 가장 많은 식당을 조회하여 REST_INFO 테이블과 자체 조인한다. 이때 조인 조건은 음식 종류와 즐겨찾기수가 같음으로 한다.
- 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회한다.
- 음식 종류를 기준으로 내림차순 정렬한다.
SELECT
A.FOOD_TYPE,
A.REST_ID,
A.REST_NAME,
A.FAVORITES
FROM
REST_INFO AS A
JOIN
(
SELECT FOOD_TYPE, MAX(FAVORITES) AS BEST
FROM REST_INFO
GROUP BY FOOD_TYPE
) AS B
ON A.FOOD_TYPE = B.FOOD_TYPE AND A.FAVORITES = B.BEST
ORDER BY
1 DESC
조인 대신 튜플 비교를 사용한 쿼리를 작성할 수도 있다.
SELECT
FOOD_TYPE,
REST_ID,
REST_NAME,
FAVORITES
FROM
REST_INFO
WHERE
(FOOD_TYPE, FAVORITES) IN (
SELECT FOOD_TYPE, MAX(FAVORITES) AS BEST
FROM REST_INFO
GROUP BY FOOD_TYPE
)
ORDER BY
1 DESC