본문 바로가기

프로그래머스(Oracle)

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

728x90

코드 힌트

  1. 카테고리별 가장 비싼 음식 제품 찾기
    • FOOD_PRODUCT 테이블에서 '과자', '국', '김치', '식용유' 카테고리에 해당하는 상품들 중 가장 높은 가격을 가진 상품을 추출합니다.
    • 서브쿼리에서 각 카테고리별로 가장 높은 가격을 찾고, 그 결과를 메인 쿼리에서 조인하여 해당 가격의 제품 정보를 가져옵니다.
  2. 정렬 기준
    • 가장 비싼 상품부터 내림차순으로 정렬되며, 동일한 가격의 제품이 여러 개일 경우에도 모두 표시됩니다.

 


정답은 더보기 클릭

더보기
더보기
SELECT FP.CATEGORY, FP.PRODUCT_NAME, FP.PRICE AS MAX_PRICE
  -- FOOD_PRODUCT 테이블에서 카테고리, 제품명, 가격을 선택하되, 가격을 MAX_PRICE로 별칭 지정

  FROM FOOD_PRODUCT FP
  JOIN (
    -- 서브쿼리: 각 카테고리별로 가장 비싼 가격을 추출
    SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE
      -- 카테고리와 해당 카테고리 내에서 가장 높은 가격을 선택
      
      FROM FOOD_PRODUCT
      WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
      -- '과자', '국', '김치', '식용유' 카테고리에 속한 상품만 필터링

      GROUP BY CATEGORY
      -- 카테고리별로 그룹화하여 각 카테고리의 최대 가격을 찾음
  ) AS MAX_PRODUCTS
  
  ON FP.CATEGORY = MAX_PRODUCTS.CATEGORY
  AND FP.PRICE = MAX_PRODUCTS.MAX_PRICE
  -- 메인 테이블과 서브쿼리를 카테고리 및 최대 가격으로 조인하여 가장 비싼 상품 정보를 가져옴
  
  ORDER BY MAX_PRODUCTS.MAX_PRICE DESC;
  -- 가장 비싼 가격부터 내림차순으로 정렬
728x90