식품분류별 가장 비싼 식품의 정보 조회하기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 풀이
- 📍GROUP BY를 썼을 때 SELECT에 나오는 컬럼은
- GROUP BY 항목이거나,
- 집계 함수(MAX, COUNT, SUM 등)를 써야 함
- 📍GROUP BY를 썼을 때 SELECT에 나오는 컬럼은
# 이 쿼리가 안되는 이유
# PRICE는 집계함수로 지정이되지만
# PRODUCT_NAME에 무슨 값을 넣어줄 지가 정해지지 않음
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자','국','김치','식용유')
GROUP BY CATEGORY
ORDER BY PRICE DESC;
SELECT F1.CATEGORY, F1.PRICE AS MAX_PRICE, F1.PRODUCT_NAME
FROM FOOD_PRODUCT F1
JOIN (
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자','국','김치','식용유')
GROUP BY CATEGORY
) F2
ON F1.CATEGORY = F2.CATEGORY AND F1.PRICE = F2.MAX_PRICE
ORDER BY F1.PRICE DESC;
- 다른 풀이
- IN
- 📍 튜플 비교
- 여러 항목을 동시에 IN 할수도 있음
- 대신 찾는 항목의 수와 내부쿼리 항목 수가 같아야함
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (
SELECT CATEGORY, MAX(PRICE) AS PRICE
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자','국','김치','식용유')
GROUP BY CATEGORY
)
ORDER BY MAX_PRICE DESC;
'코딩테스트 > SQL' 카테고리의 다른 글
| [SQL] 5월 식품들의 총매출 조회하기 (0) | 2025.06.09 |
|---|---|
| [SQL][JOIN][COUNT] 대장균들의 자식의 수 구하기 (0) | 2025.05.01 |
| [SQL] 보호소에서 중성화한 동물 (0) | 2025.04.25 |
| [SQL] 헤비 유저가 소유한 장소 (0) | 2025.04.20 |
| [SQL] 분기별 분화된 대장균의 개체 수 구하기 (0) | 2025.04.16 |