FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/131116
SELECT
fp.CATEGORY,
MAX_PRICE,
fp.PRODUCT_NAME
FROM(
SELECT
f.CATEGORY,
MAX(f.PRICE) AS MAX_PRICE,
f.PRODUCT_NAME
FROM
FOOD_PRODUCT f
WHERE
f.CATEGORY = '과자'
OR
f.CATEGORY = '국'
OR
f.CATEGORY = '김치'
OR
f.CATEGORY = '식용유'
GROUP BY
f.CATEGORY) t1
INNER JOIN
FOOD_PRODUCT fp
ON
t1.CATEGORY = fp.CATEGORY
AND
t1.MAX_PRICE = fp.PRICE
ORDER BY
MAX_PRICE DESC
PRODUCT_NAME을 MAX_PRICE와 동일한 레코드에서 출력하는 것에서 막혔다. CATEGORY를 그룹화하고 최대 금액을 가진 테이블을 생성하여 기존 테이블의CATEGORY와 조인하여 MAX_PRICE와 동일한 금액의 PRODUCT_NAME를 추출할 수 있었다. SELECT
f.CATEGORY,
MAX(f.PRICE) AS MAX_PRICE,
f.PRODUCT_NAME
FROM
FOOD_PRODUCT f
WHERE
f.CATEGORY = '과자'
OR
f.CATEGORY = '국'
OR
f.CATEGORY = '김치'
OR
f.CATEGORY = '식용유'
GROUP BY
f.CATEGORY
ORDER BY
MAX_PRICE DESC
PRODUCT_NAME가 처음 GROUP BY에서 나온 값으로 나와서 만족하지 않는다.