https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
SELECT
CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM
FOOD_PRODUCT
WHERE
PRICE IN (
SELECT
MAX(PRICE)
FROM
FOOD_PRODUCT
GROUP BY
CATEGORY
)
AND
CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY
CATEGORY
ORDER BY
MAX(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;
이런식으로 쓰며 최고 가격은 구할 수 있다. 그러나 나머지 사항들은 그룹의 첫번 째 행을 선택한다. 가격만 최고 가격일 뿐이다.
이를 해결하려면 서브쿼리를 써야한다.
'MYSQL > 프로그래머스 LV04' 카테고리의 다른 글
입양 시각 구하기(2) (0) | 2025.03.27 |
---|---|
우유와 요거트가 담긴 장바구니 (0) | 2025.03.26 |
5월 식품들의 총매출 조회하기 (0) | 2025.03.25 |
서울에 위치한 식당 목록 출력하기 (0) | 2025.03.25 |
그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2025.03.24 |