MYSQL/프로그래머스 LV04
식품분류별 가장 비싼 식품의 정보 조회하기
수스리
2025. 3. 26. 19:17
https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
SELECT
CATEGORY, MAX(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, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM
FOOD_PRODUCT
WHERE
CATEGORY IN ("과자", "국", "김치", "식용유")
GROUP BY
CATEGORY
ORDER BY
MAX(PRICE) DESC;
이런식으로 쓰며 최고 가격은 구할 수 있다. 그러나 나머지 사항들은 그룹의 첫번 째 행을 선택한다. 가격만 최고 가격일 뿐이다.
이를 해결하려면 서브쿼리를 써야한다.