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

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절 서브쿼리 이용 ㄱㄱ
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

댓글