(프로그래머스) LV.4 식품분류별 가장 비싼 식품의 정보 조회하기

chaechae·2024년 1월 31일
0

코딩테스트(SQL) 

목록 보기
16/22
post-thumbnail

🔎 문제

🔎 code


SELECT CATEGORY
    ,PRICE as MAX_PRICE
    ,PRODUCT_NAME
FROM(SELECT CATEGORY
            , PRODUCT_NAME
            , PRICE
            , RANK() OVER(PARTITION BY CATEGORY ORDER BY PRICE DESC) AS rnk
        FROM FOOD_PRODUCT
        WHERE CATEGORY IN ('과자','국','김치','식용유')
        GROUP BY CATEGORY,PRODUCT_NAME
        ORDER BY CATEGORY, PRICE DESC) as A
WHERE  rnk = 1
ORDER BY PRICE DESC
  • 문제에 제시된 CATEGORY 에 해당하는 품목만 IN으로 필터한뒤
  • 'CATEGORY', 'PRODUCT_NAME' 순으로 GROUP BY 하여 내림차순으로 카테고리별 가격을 정렬하면 아래와 같은 테이블이 형성됩니다. 각 카테고리별 가격이 높은 품목순으로 정렬 되어있는데요!

여기서 문제의 핵심은 각 카테고리별 높은 PRICE에 해당하는 제품만 가져와야 하기 때문에!
RANK 함수를 이용해서 CATEGORY 별로 순위를 매긴다음 , RANK 가 1에 해당하는 행만 가져오는 아이디어를 이용했습니다.

RANK() OVER(PARTITION BY CATEGORY ORDER BY PRICE DESC) AS rnk

그럼 아래와 같이 카테고리별 price의 rnk 값이 붙고 주어진 조건에 필터링 하면 끝!

profile
게임 혹은 다양한 컨텐츠가 있는 곳을 좋아합니다. 시리즈를 참고하시면 편하게 글을 보실 수 있습니다🫠

0개의 댓글