본문 바로가기

프로그래머스 풀이/Lv 4

[프로그래머스 SQL] 식품분류별 가장 비싼 식품의 정보 조회하기

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/131116

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

Group By 를 사용한 후 원하는 것을 가져오는 문제이다.

 

서브쿼리를 통해 카테고리와 최대 가격을 가져오고 이것을 join 하거나 in 연산자를 사용하면된다.

 

1. join 사용

SELECT FP.CATEGORY, VALUE.MAX_PRICE, FP.PRODUCT_NAME
FROM FOOD_PRODUCT AS FP
JOIN
(
    SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE
    FROM FOOD_PRODUCT
    GROUP BY CATEGORY
    HAVING 
        CATEGORY = "식용유" OR CATEGORY = "국" 
        OR CATEGORY = "김치" OR CATEGORY = "과자"
) AS VALUE
ON FP.CATEGORY = VALUE.CATEGORY AND FP.PRICE = VALUE.MAX_PRICE
ORDER BY VALUE.MAX_PRICE DESC;

 

2. in 사용

SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN
(
    SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE
    FROM FOOD_PRODUCT
    GROUP BY CATEGORY
    HAVING 
        CATEGORY = "식용유" OR CATEGORY = "국" 
        OR CATEGORY = "김치" OR CATEGORY = "과자"
)
ORDER BY MAX_PRICE DESC;