*문제
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)
'문제풀이 > PROGRAMMERSSCHOOL' 카테고리의 다른 글
GROUP BY - 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2022.11.09 |
---|---|
GROUP BY - 성분으로 구분한 아이스크림 총 주문량 (0) | 2022.11.09 |
GROUP BY - 진료과별 총 예약 횟수 출력하기 (0) | 2022.11.08 |
SUM, MAX, MIN - 중복 제거하기 (0) | 2022.11.08 |
SUM, MAX, MIN - 동물 수 구하기 (0) | 2022.11.08 |