FIRST_HALF 테이블과 JULY 테이블을 활용해 7월 총 주문량과 상반기 총 주문량을 합산한 값이 큰 순서대로 상위 3개의 맛을 조회하는 문제이다.
| 테이블 | 주요 컬럼 |
|---|---|
FIRST_HALF | FLAVOR, TOTAL_ORDER |
JULY | FLAVOR, TOTAL_ORDER |
문제를 읽고 아래 2단계로 풀이 흐름을 정리하였다.
FIRST_HALF 테이블과 JULY 테이블을 FLAVOR 기준으로 JOINJULY 테이블은 출하 ID별로 같은 FLAVOR가 여러 행으로 나뉘어 저장되어 있기 때문에, 바로 JOIN하면 중복이 발생한다. 따라서 JULY 테이블을 먼저 GROUP BY FLAVOR로 맛별로 합산한 뒤, 그 결과를 서브쿼리로 만들어 FIRST_HALF와 JOIN해야 한다.-- JULY를 먼저 맛별로 합산
SELECT FLAVOR, SUM(TOTAL_ORDER) AS JULY_ORDER
FROM JULY
GROUP BY FLAVOR
이 서브쿼리 결과를 J라는 별칭으로 FIRST_HALF F와 FLAVOR 기준으로 JOIN하면, 상반기와 7월 주문량을 한 행에서 더할 수 있다.
FLAVOR | F.TOTAL_ORDER | J.JULY_ORDER | 합계
딸기 | 5000 | 3000 | 8000
초코 | 4000 | 2000 | 6000
이후 F.TOTAL_ORDER + J.JULY_ORDER를 내림차순으로 정렬하고 LIMIT 3으로 상위 3개만 뽑으면 된다.
구체적으로 정리한 풀이 흐름:
JULY 테이블을 FLAVOR 기준으로 합산FIRST_HALF와 서브쿼리를 FLAVOR 기준으로 JOINORDER BY F.TOTAL_ORDER + J.JULY_ORDER DESC로 합산 주문량 내림차순 정렬LIMIT 3으로 상위 3개만 추출SELECT F.FLAVOR
FROM FIRST_HALF F
JOIN (
SELECT FLAVOR, SUM(TOTAL_ORDER) AS JULY_ORDER
FROM JULY
GROUP BY FLAVOR
) J ON F.FLAVOR = J.FLAVOR
ORDER BY F.TOTAL_ORDER + J.JULY_ORDER DESC
LIMIT 3