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()는 윈도우 함수의 일종으로 그룹별로 상위 1개만 가져올 때, 순위를 매길 때, 중복 제거 대신 하나만 추출할 때(특정 조건으로) 사용하면 좋다.
ROW_NUMBER() OVER (
PARTITION BY <그룹기준컬럼>
ORDER BY <정렬기준컬럼> [ASC|DESC]
)