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

수이·2025년 3월 14일
0

🟢 코드카타 / SQL

목록 보기
49/81
post-thumbnail

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

유사한문제
🔗즐겨찾기가 가장 많은 식당정보 출력하기

조건정리
1. 식품분류별로 가격이 제일 비싼 식품
2. 식품분류, 가격, 이름 조회
3. 식품분류가 과자, 국, 김치, 식용유
4. 식품 가격을 기준으로 내림차순 정렬

풀이

즐찾이 가장 많은 식당 풀때랑 똑같이 접근했다!
나는 WITH를 쓰는 게 제일 재밌는 것 같다 와하하

WITH rnk_pr AS(
    SELECT *,
           RANK() OVER(PARTITION BY CATEGORY ORDER BY PRICE DESC) AS rnk
    FROM FOOD_PRODUCT 
    WHERE CATEGORY IN('과자','국','김치','식용유')
 )
 
 SELECT CATEGORY,
        PRICE AS MAX_PRICE,
        PRODUCT_NAME
 FROM rnk_pr
 WHERE rnk = 1
 ORDER BY MAX_PRICE DESC

풀이변형
WHERE 조건 서브쿼리 사용 + MAX 이용해서 풀어보기

정답처리가 되긴 했으나 이것은 오답임

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

과자 MAX_PRICE = 9000
국 MAX_PRICE = 10000
여기에 9000짜리 국이 하나 더 있다고 가정할 경우 10000짜리도 9000짜리도 나옴

풀이변형 - 첨삭

SELECT FP.CATEGORY, 
       FP.PRICE AS MAX_PRICE, 
       FP.PRODUCT_NAME
FROM FOOD_PRODUCT FP
WHERE FP.CATEGORY IN ('과자', '국', '김치', '식용유')
AND FP.PRICE = (SELECT MAX(PRICE) 
                FROM FOOD_PRODUCT 
                WHERE CATEGORY = FP.CATEGORY) -- 이게 제일 중요  
ORDER BY FP.PRICE DESC;

본쿼리 FP에 있는 카테고리만 불러와서 서브쿼리를 수행하는 것

FP. CATEGORY에 김치가 들어가면 서브쿼리가 거기서 다시 돔(김치에서의 MAX_PRICE를 찾아주고 다시 도는것)

파이썬 반복문이랑 비슷하다

샤라웃투동진님.. 매일 등장하셔요.. 😅

0개의 댓글

관련 채용 정보