https://school.programmers.co.kr/learn/courses/30/lessons/131116
문제
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
틀린 코드
SELECT category, max(price) as max_price, PRODUCT_NAME
from food_product
group by category
having category ="과자" or category ="국" or category ="김치" or category ="식용유"
order by max(price) desc
정답
SELECT category, price as max_price, PRODUCT_NAME
from food_product
where price in (select max(price) from food_product group by category) and category in ("과자", "국", "김치", "식용유")
order by price desc
틀린 이유 : max로 조회하면 해당 컬럼에 해당하는 max 값만 나오고 max 컬럼과 관련된 행 전체가 나오지 않아서 한 행에 다른 컬럼 값이 나온다. 따라서 서브쿼리로 추출해야한다.
팁 : 여러 개 포함할 땐 "="보다는 "in"으로 한번에 묶으면 편함.