프로그래머스 Lv3. 즐겨찾기가 가장 많은 식당 정보 출력하기

2023. 8. 15. 23:00SQL/SQL 테스트 연습

 

문제 설명

다음은 식당의 정보를 담은 REST_INFO 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.

 

Column name Type Nullable
REST_ID VARCHAR(5) FALSE
REST_NAME VARCHAR(50) FALSE
FOOD_TYPE VARCHAR(20) TRUE
VIEWS NUMBER TRUE
FAVORITES NUMBER TRUE
PARKING_LOT VARCHAR(1) TRUE
ADDRESS VARCHAR(100) TRUE
TEL VARCHAR(100) TRUE

 

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

 

문제 풀이
WITH RankedRestaurants AS (
    SELECT 
        FOOD_TYPE, 
        REST_ID, 
        REST_NAME, 
        FAVORITES,
        ROW_NUMBER() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS rn
    FROM REST_INFO
)

SELECT 
    FOOD_TYPE, 
    REST_ID, 
    REST_NAME, 
    FAVORITES
FROM RankedRestaurants
WHERE rn = 1
ORDER BY FOOD_TYPE DESC;

WITH AS문을 사용하여 구문의 복잡성을 줄였으며, 음식종류별로 즐겨찾기수가 가장 많은 식당을 조회하기 위해 PARTITION BY를 사용하는 쿼리문을 작성했다.