728x90
문제
7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
풀이
Level 4부터는 진짜 어려운 것 같다. 서브쿼리 써야 하는 것도 있고 복잡하다. 이 문제도 정말 다양한 풀이가 있는데 가장 간단한 풀이로 가져왔다.
SELECT F.FLAVOR
FROM FIRST_HALF F
INNER JOIN JULY J
ON F.FLAVOR = J.FLAVOR
GROUP BY F.FLAVOR
ORDER BY SUM(F.TOTAL_ORDER + J.TOTAL_ORDER) DESC
LIMIT 3 OFFSET 0
이 풀이에서 이해가 안 됐던 부분은 ORDER BY절의 SUM(F.TOTAL_ORDER + J.TOTAL_ORDER) 부분이다.
왜 SUM을 하는 걸까? 이미 더했잖아.
왼쪽은 SUM을 안 했고, 오른쪽은 SUM을 했다. chocolate과 strawberry의 순서가 다르다.
월에는 아이스크림 주문량이 많아 같은 아이스크림에 대하여 서로 다른 두 공장에서 아이스크림 가게로 출하를 진행하는 경우가 있습니다. 이 경우 같은 맛의 아이스크림이라도 다른 출하 번호를 갖게 됩니다.
JULY 테이블을 보면 strawberry가 다른 출하번호로 2번 있다. SUM을 안 하면 출하번호 같은 것끼리만 주문량이 더해지기 때문에 SUM을 해야 FLAVOR 그룹별로 상반기와 7월 주문량이 더해져 출하번호가 다른 딸기맛이 다르게 취급되지 않는다.
728x90
'IT > SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 JOIN 06 없어진 기록 찾기 (0) | 2023.10.02 |
---|---|
[MySQL] 프로그래머스 JOIN 05 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2023.10.02 |
[MySQL] 프로그래머스 JOIN 03 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.10.02 |
[MySQL] 프로그래머스 JOIN 02 5월 식품들의 총매출 조회하기 (0) | 2023.10.02 |
[MySQL] 프로그래머스 JOIN 01 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2023.10.02 |