
조인 칼럼 : FLAVOR
FIRST_HALF와 JULY에 대한 서브쿼리 각각 조회 후, 추출해야하는 컬럼인 FLAVOR를 기준으로 조인
그 다음 ROWNUM을 사용해 3개만 추출
ps. 풀이코드1으로 풀고나서, 두 테이블의 컬럼들을 보니 형식이 같은걸 보고 UNION ALL 까지 생각하긴 했는데,, 이렇게 배워가는거지!
SELECT FLAVOR
FROM (
SELECT A.FLAVOR, A.T_O+B.T_O AS TOT
FROM (SELECT FLAVOR, SUM(TOTAL_ORDER) AS T_O
FROM FIRST_HALF
GROUP BY FLAVOR) A
, (SELECT FLAVOR, SUM(TOTAL_ORDER) AS T_O
FROM JULY
GROUP BY FLAVOR) B
WHERE A.FLAVOR = B.FLAVOR
ORDER BY TOT DESC
)
WHERE ROWNUM<=3
SELECT FLAVOR
FROM (
SELECT FLAVOR
FROM (
SELECT FLAVOR, TOTAL_ORDER
FROM FIRST_HALF
UNION ALL
SELECT FLAVOR, TOTAL_ORDER
FROM JULY
)
GROUP BY FLAVOR
ORDER BY SUM(TOTAL_ORDER) DESC
)
WHERE ROWNUM <=3;
💬 이 문제의 핵심은 "두 테이블의 데이터를 합쳐서 총합을 구하는 것" 입니다.
이렇게 두 테이블의 구조(맛, 주문량)가 같고 단순히 더하기만 하면 될 때는, 양옆으로 연결하는 조인(JOIN)보다 위아래로 데이터를 먼저 이어 붙이는 UNION ALL이 훨씬 직관적이고 효율적입니다.
UNION vs UNION ALL
UNION : 중복 불가 (합집합 개념)
UNION ALL : 중복 가능 (UNION보다 성능 좋음)