지우너
[프로그래머스 SQL 고득점 Kit] GROUP BY 본문
식품분류별 가장 비싼 식품의 정보 조회하기
더보기
정답 코드
-- FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회
# 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력
# 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
)
ORDER BY MAX_PRICE DESC
실패했던 코드
-- FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회
# 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력
# 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.
SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
ORDER BY MAX_PRICE DESC
실패 원인:
MAX(PRICE)는 그룹 내에서 가장 높은 가격을 계산 → CATEGORY별로 계산됨
문제는 PRODUCT_NAME. MAX(PRICE)로 그룹화하면서 해당 그룹에 속하는 제품 중 어떤 PRODUCT_NAME이 가장 높은 가격과 연결되어야 하는지 명확하지 않음.
⇒ 서브쿼리를 이용하여, 카테고리별 MAX_PRICE를 계산하고, 해당 카테고리, MAX_PRICE와 일치하는 컬럼을 찾는다.
조건에 맞는 사용자와 총 거래금액 조회하기
더보기
내가 푼 코드
-- USED_GOODS_BOARD와 USED_GOODS_USER 테이블
# 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회
# 결과는 총거래금액을 기준으로 오름차순 정렬
WITH VIP_USER AS(
SELECT WRITER_ID AS USER_ID, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD
WHERE STATUS='DONE'
GROUP BY WRITER_ID
HAVING SUM(PRICE)>=700000
)
SELECT USER_ID, NICKNAME, TOTAL_SALES
FROM VIP_USER
JOIN USED_GOODS_USER USING(USER_ID)
ORDER BY TOTAL_SALES ASC
'Problem Solving' 카테고리의 다른 글
[프로그래머스 SQL 고득점 Kit] JOIN (0) | 2025.01.14 |
---|---|
[프로그래머스 SQL 고득점 Kit] SELECT (0) | 2025.01.13 |
[프로그래머스 SQL 고득점 Kit] String, Date (0) | 2025.01.11 |
[프로그래머스 SQL 고득점 Kit] SUM, MAX, MIN (0) | 2025.01.10 |
[BOJ] 1987 java (0) | 2025.01.05 |