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

    댓글