본문 바로가기

코딩테스트 연습/programmers

[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기 - MYSQL

처음엔 서브쿼리 안쓰고 SELECT 한 번만에 되는 줄 알고 완전 쉽네! 했다가

GROUP BY CATEGORY로 묶고 PRODUCT_NAME을 출력해버리면 그냥 제일 상위의 값이 나온다는걸 뒤늦게 알아버렸다.

 

그래서 먼저

1. CATEGORY 그룹별로 최대 MAX 값을 찾고

    SELECT CATEGORY, MAX(PRICE)
    FROM FOOD_PRODUCT
    WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
    GROUP BY CATEGORY

 

2. 전체 FOOD_PRODUCT 테이블에서 해당 CATEGORY와 PRICE에 해당하는 값의  CATEGORY, PRICE, PRODUCT_NAME을 출력해줬다.

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 PRICE DESC