-
[프로그래머스]식품분류별 가장 비싼 식품의 정보 조회하기(Lv.4)SQL 2023. 4. 10. 10:09
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유' 인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
첫 번째 시도는 실패.
SELECT category, max(price) as MAX_PRICE , product_name FROM food_product GROUP BY category HAVING category IN ('과자', '국', '김치', '식용유') ORDER BY max_price DESC;
왜 실패했는지 다음의 블로그 글을 보고 알았다.
max()를 쓰면 정렬 후 옆의 칼럼들과 이름이 일치하지 않는다는 것이다.
실제로 그런지 확인해보았다.
SELECT * FROM food_cateogry ORDER BY price DESC;
확인해보니 식용유 카테고리에서 마조유가 가장 비싼데, 처음 실행한 코드로 하니까 다른 결과가 나왔다.
블로그 글을 보고 같은 원리로 코드를 작성해보았다.
SELECT f.category, f.price as MAX_PRICE, f.product_name FROM food_product as f, (SELECT category, max(price) as max_price, product_name from food_product group by category HAVING category IN ('과자', '국', '김치', '식용유')) as p WHERE f.price = p.max_price and f.category= p.category ORDER BY max_price DESC;
성공!
'SQL' 카테고리의 다른 글
[프로그래머스]과일로 만든 아이스크림 고르기(LV.1) (0) 2023.06.11 [프로그래머스]자동차 대여 기록에서 장기/단기 대여 구분하기(Lv.1) (0) 2023.04.17 [프로그래머스]Lv.1 문제 모음 (0) 2023.04.13 [프로그래머스]입양 시각 구하기(Lv.4) (0) 2023.04.12 [프로그래머스]우유와 요거트가 담긴 장바구니(Lv.4) (0) 2023.04.12