[Programmers] 식품분류별 가장 비싼 식품의 정보 조회하기

HAHAHELLO·2025년 3월 26일

SQL

목록 보기
14/17

Lv.4 식품분류별 가장 비싼 식품의 정보 조회하기

문제

FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.

예제

나의 풀이

-- 코드를 입력하세요
SELECT
	CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM
	FOOD_PRODUCT
WHERE PRICE IN (SELECT MAX(PRICE)
             FROM FOOD_PRODUCT
             GROUP BY CATEGORY)
AND CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY 
	CATEGORY
ORDER BY
	MAX_PRICE DESC;

다른 풀이

SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY CATEGORY ORDER BY PRICE DESC) AS rn
    FROM FOOD_PRODUCT
    WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
) AS ranked
WHERE rn = 1
ORDER BY MAX_PRICE DESC;

끄적끄적

ROW_NUMBER()

ROW_NUMBER()는 윈도우 함수의 일종으로 그룹별로 상위 1개만 가져올 때, 순위를 매길 때, 중복 제거 대신 하나만 추출할 때(특정 조건으로) 사용하면 좋다.

ROW_NUMBER() OVER (
    PARTITION BY <그룹기준컬럼>
    ORDER BY <정렬기준컬럼> [ASC|DESC]
)
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글