Data, English, Travel

[프로그래머스 SQL 고득점 kit] 식품분류별 가장 비싼 식품의 정보 조회하기 본문

Data/SQL

[프로그래머스 SQL 고득점 kit] 식품분류별 가장 비싼 식품의 정보 조회하기

J._.haza 2025. 3. 6. 23:56

문제 바로가기 >> https://school.programmers.co.kr/learn/courses/30/lessons/131116

 

문제 요약

FOOD_PRODUCT에서 식품 분류로 GROUP BY 한 후 가격이 제일 비싼 식품 찾아 조회한다.

WINDOW 함수로 식품 분류 별 비싼 식품을 찾을 수 있을 것 같다.

그 후 서브쿼리로 RANK == 1인 식품 필터링한다.

 

POINT : 윈도우 함수 사용법은 RANK() OVER (PARTITION BY ~ ORDER BY) 이다


문제 풀이

1) WINDOW 함수로 각 제품의 식품 분류 별 가격 순위를 뽑는다.
2) 그 후 카테고리에 IN() 으로 필터링을 사용한다
3) 위 결과를 FROM절 서브쿼리를 사용하여 RANKS=1인 제품만 뽑아내어 정렬한다.

SELECT 
    CATEGORY, PRICE, PRODUCT_NAME
FROM (
    SELECT 
        CATEGORY, PRICE, PRODUCT_NAME,
        RANK() OVER (PARTITION BY CATEGORY ORDER BY PRICE DESC) RANKS
    FROM 
        FOOD_PRODUCT
    WHERE 
        CATEGORY IN ('과자','국','김치','식용유')
) A
WHERE 
    RANKS = 1
ORDER BY 2 DESC