코딩테스트/SQL 코드카타
MySQL 프로그래머스 | 식품분류별 가장 비싼 식품의 정보 조회하기
ANNASENA
2024. 9. 24. 08:00
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131116#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 식품 분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름 조회하기
- 식품 분류가 '과자', '국', '김치', '식용유'인 경우만 출력
- 식품 가격 기준 내림차순 정렬
테이블
FOOD_PRODUCT | ![]() |
풀이과정
# 오답
- 식품분류(CATEGORY)별로 가장 비싼 MAX(PRICE) 구하라고 했을 때 단순하게 GROUP BY 해서 풀면 틀림
- 이유는 CATEGORY, MAX_PRICE 뒤에 PRODUCT_NAME이 잘못 출력되기 때문
- SELECT문에서 PRODUCT_NAME을 조회할 때
해당 CATEGORY와 MAX_PRICE에 따른 PRODUCT_NAME이 출력되는 것이 아님 주의! - WHERE절 서브쿼리 이용 ㄱㄱ
- SELECT문에서 PRODUCT_NAME을 조회할 때
1 2 3 4 5 6 7 | SELECT CATEGORY, MAX(PRICE) MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE CATEGORY IN('과자', '국', '김치', '식용유') GROUP BY CATEGORY ORDER BY PRICE DESC | cs |
# 정답
- WHERE절 : (CATEGORY, PRICE) 조합과 서브쿼리 결과문을 비교해서 문제에서 요구한 조건에 맞는 경우의
CATEGORY, MAX_PRICE, 그리고 PRODUCT_NAME을 출력하게 만듦
1 2 3 4 5 6 7 8 9 | SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE (CATEGORY, PRICE) IN(SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '국', '김치', '식용유') GROUP BY CATEGORY) ORDER BY MAX_PRICE DESC | cs |
728x90