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

Eunding·2024년 2월 20일
0

SQL 고득점 Kit

목록 보기
32/62

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

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

문제

FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.

예시

풀이

풀다가 내가 막혔던 이유는 GROUP BY 상태에서 MAX 함수가 안먹혀서 막혔었다.

결론적으로는 2가지 방법으로 풀었다.
방법1)

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

WHERE절로 CATEGORY가 ('과자', '국', '김치', '식용유') 중 하나이고 PRICE는 서브쿼리로 CATEGORY별 최대 가격만 조회


방법2)

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

서브쿼리로 CATEGORY, PRICE 모두 만족하는 데이터를 찾는데
CATEGORY로 그룹화하고 HAVING절로 CATEGORY가 ('과자', '국', '김치', '식용유') 중 하나이고 이때 최대 가격만 조회

=> 같은 코드

profile
안녕하세요~

0개의 댓글

관련 채용 정보