Codingtest
[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기 Level4 Mysql 풀이
Runningturtle
2024. 9. 27. 23:22
https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
풀이방법
주어진 조건인 카테고리의 제품을 HAVING조건으로 그룹핑 한 뒤 셀렉트 서브쿼리를 이용해서 기존 테이블과 조인해서 풀이하였다. 풀이 과정에서 주의할 점은 alias를 지정을 잘 해줘야 오류가 생기지않는다 왜냐하면 같은 컬럼명을 가져올때 똑같은 이름이 있으면 어떤 컬럼을 가져와야 할지 몰라 오류가 발생한다.
SELECT B.CATEGORY, B.PRICE AS MAX_PRICE , B.PRODUCT_NAME FROM(SELECT CATEGORY,MAX(PRICE) AS MAX_PRICE FROM FOOD_PRODUCT AS FP
GROUP BY FP.CATEGORY
HAVING FP.CATEGORY = '과자' OR FP.CATEGORY= '국' OR FP.CATEGORY= '김치' OR FP.CATEGORY = '식용유'
) A, FOOD_PRODUCT B
WHERE A.MAX_PRICE = B.PRICE AND A.CATEGORY = B.CATEGORY
ORDER BY 2 DESC