프로그래머스 SQL 고득점 킷 즐겨찾기가 가장 많은 식당 정보 출력하기

hysss·2023년 2월 18일
0

GROUP BY - 즐겨찾기가 가장 많은 식당 정보 출력하기

문제 분석

REST_INFO 테이블에서
음식종류별로 즐겨찾기수가 가장 많은 식당
음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요.
이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요.

코드 1 (WITH Clause)

WITH FOOD AS(
    SELECT FOOD_TYPE, MAX(FAVORITES) AS FAV_COUNT
    FROM REST_INFO
    GROUP BY FOOD_TYPE)

SELECT R.FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO R JOIN FOOD F ON R.FOOD_TYPE=F.FOOD_TYPE AND R.FAVORITES=F.FAV_COUNT
ORDER BY R.FOOD_TYPE DESC

코드 2 (WHERE Clause)

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

문제 풀이

첫 번째 풀이 방법은 WITH로 임시 테이블을 만들어서 음식종류별로 Grouping을 하고, 각 음식종류별로 가장 높은 즐겨찾기수를 SELECT했다.

이를 이용해서 REST_INFO 테이블과 JOIN을 하는데, FOOD_TYPE은 UNIQUE하지 않기 때문FAVORITES가 그룹 별 최대값이라는 조건(R.FAVORITES = F.FAV_COUNT)을 추가하여 최대한 중복의 가능성을 줄였다.


두 번째 풀이 방법은 식품분류별 가장 비싼 식품의 정보 조회하기 때와 똑같이 WHERE절에서 서브 쿼리를 사용하여 조건을 처리하는 방식이다.

profile
매일 매일 규칙적으로

0개의 댓글