본문 바로가기
MYSQL/프로그래머스 LV04

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

by 수스리 2025. 3. 26.

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;

이런식으로 쓰며 최고 가격은 구할 수 있다. 그러나 나머지 사항들은 그룹의 첫번 째 행을 선택한다. 가격만 최고 가격일 뿐이다.

이를 해결하려면 서브쿼리를 써야한다.