[프로그래머스] SQL 고득점 Kit - GROUP BY (2)

박채은·2023년 6월 24일
0

코딩테스트

목록 보기
52/52

식품분류별 가장 비싼 식품의 정보 조회하기

https://whdgus928.tistory.com/29
https://jaehwaseo.tistory.com/30

[CATEGORY로 그룹핑만 시켜준 경우]

SELECT *
from FOOD_PRODUCT
where CATEGORY in ('과자', '국', '김치', '식용유')
group by CATEGORY
order by PRICE desc;

[틀린 코드]

SELECT CATEGORY, max(PRICE) as MAX_PRICE, PRODUCT_NAME
from FOOD_PRODUCT
where CATEGORY in ('과자', '국', '김치', '식용유')
group by CATEGORY
order by MAX_PRICE desc;
  • GROUP BY로 묶으면 해당 그룹의 가장 첫번째 행의 정보를 가져온다.
  • GROUP BY 후 그냥 MAX를 해버리면 이는 최대값이 아니라 테이블 최상단 값을 가져오는 것!
  • SUM(), COUNT(*)의 경우에 SELECT 절에 바로 사용했었는데 최대/최소값은 서브 쿼리에 작성해서 풀 것!

https://monawa.tistory.com/126
https://school.programmers.co.kr/questions/38854
https://jaehwaseo.tistory.com/30

[수정한 코드]

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;

0개의 댓글