부제:
주문량이 많은 아이스크림들 조회하기, 레벨 5
1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/133027
2. 정답 코드:
=> JOIN 활용
SELECT fh.flavor
from first_half as fh
join july as j
on fh.flavor = j.flavor
group by fh.flavor
order by (fh.total_order + sum(j.total_order)) desc
limit 3
=> 서브쿼리 활용
SELECT F.FLAVOR
FROM FIRST_HALF F
JOIN (
SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM JULY
GROUP BY FLAVOR
) J ON F.FLAVOR = J.FLAVOR
ORDER BY (F.TOTAL_ORDER + J.TOTAL_ORDER) DESC
LIMIT 3;
3. 오류 상황:
SELECT flavor
from first_half as fh
where (
select total_order
from july as j
where fh.shipment_id = j.shipment_id
and fh.shipment_id + j.shipment_id
group by flavor
order by total_order desc
limit 3
)
order by flavor desc
=> 7월 테이블에 동일한 맛 여러번 출하
=> 서브쿼리 오류
=> 집계, 정렬 오류
4. 시도 방법:
=> sum 활용
=> 테이블 연결 기준 컬럼 수정
5. 최종 문제 해결 방법:
=> 상반기 테이블(FIRST_HALF)은 맛(Flavor)이 기본 키(PK)지만, 7월 테이블은 동일한 맛이 여러 번 출하(SHIPMENT_ID가 다름)되어 기록되어 있을 수 있다. 7월 테이블에서 맛별로 주문량을 먼저 합쳐야(SUM) 한다.
=> 상반기 주문량과 7월 주문량을 더해야 하므로, 두 테이블을 맛(FLAVOR)을 기준으로 연결해야 한다. FROM FIRST_HALF AS F JOIN JULY AS J ON F.FLAVOR = J.FLAVOR 구조로 작성.
=> 맛별로 그룹화를 한 뒤, 두 테이블의 주문량 합계를 더한 값으로 정렬
'SQL 알고리즘 코드카타' 카테고리의 다른 글
| SQL 알고리즘 코드카타 22일차(2) 26.01.20(화) (0) | 2026.01.20 |
|---|---|
| SQL 알고리즘 코드카타 22일차(1) 26.01.20(화) (0) | 2026.01.20 |
| SQL 알고리즘 코드카타 21일차(2) 26.01.19(월) (0) | 2026.01.19 |
| SQL 알고리즘 코드카타 21일차(1) 26.01.19(월) (0) | 2026.01.19 |
| SQL 알고리즘 코드카타 20일차(5) 26.01.18(일) (0) | 2026.01.18 |