개발/SQL

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

송디 2024. 6. 7. 10:30

출처 : 프로그래머스

   ■ 사용 문법    

GROUP BY, JOIN

( GROUP BY 절은 그룹화 기준 컬럼(CATEGORY)과 집계 함수의 결과(MAX(PRICE))만 반환한다.)

   ■ 사용 방법    

1. GROUP BY 절은 그룹화 기준 컬럼과 집계 함수의 결과만 반환하다. 따라서, 아래와 같은 코드 실행 시 PRODUCT_NAME이 매칭되지 않은 값으로 나온다. 

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

2. 이를 해결해주기 위해서 카테고리와 카테고립 별 제일 비싼 가격을 FOOD_PRODUCT과 JOIN으로 매칭시켜주는 것이다. 

3. 첫번째 서브쿼리만 주의해서 봐주면 잘 풀 수 있을 것이다. 

  ■ 코드    

SELECT A.CATEGORY, A.MAX_PRICE, B.PRODUCT_NAME
FROM 
  ( SELECT CATEGORY, MAX(PRICE) as MAX_PRICE
    FROM FOOD_PRODUCT 
    WHERE CATEGORY = "과자" OR CATEGORY = "국" OR CATEGORY = "김치" OR CATEGORY = "식용유"
    GROUP BY CATEGORY ) AS A 
JOIN FOOD_PRODUCT AS B
ON A.MAX_PRICE = B.PRICE AND A.CATEGORY = B.CATEGORY
ORDER BY MAX_PRICE DESC

 

728x90