본문 바로가기
문제풀이/PROGRAMMERSSCHOOL

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

by 제밍 2022. 11. 9.

*문제

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

 

 

*풀이

1. 필자는 제일 먼저 '식품분류별로 가격이 제일 비싼 식품'을 도출해낼것이다.

그렇게 된다면 

1 - 1 ) 식품분류, 제일 비싼 가격 -- SELECT

1 - 2 ) FOOD_PRODUCT -- FROM

1 - 3 ) 식품분류가 '과자','국','김치','식용유' 인 경우에만 출력한다 -- WHERE

1 - 4 ) 식품분류별 -- GROUP BY

 

이렇게 된다면 나올 SQL문은

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

위와 같다. 

 

이 SQL문을 FROM절로 옮겨놓고, JOIN을 통해 최종 정답을 도출해낼것이다.

참고로 다 쓰기엔 너무 기니까 이 SQL문을 A라고 부르게씀!

+ 기존 FOOD_PRODUCT TABLE은 B로!

 

2) 최종정답 만들기

2 - 1 )  A에서의 CATEGORY, A에서의 MAX_PRICE, B에서의 PRODUCT_NAME 조회 -- SELECT

2 - 2 )  A와 B를 JOIN -- FROM

2 - 3 ) 가격을 기준으로 내림차순 -- ORDER BY

 

 

*정답*

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

 

 

 

코딩테스트 연습 - 식품분류별 가장 비싼 식품의 정보 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)