programmers
오프라인/온라인 판매 데이터 통합하기 [MYSQL]
Meluu_
2026. 1. 3. 09:25
🧫 문제 분석
✔️ 출처
📖 문제

UNION을 쓰는 문제가 나왔다 !
ONLINE_SALE 과 OFFLINE_SALE 을 각 각 전부 SELECT 한 뒤
UNION 하면 된다. 이때 OFFLINE은 USER_ID가 없으므로 NULL 을 SELECT 에 넣어주고 별칭을 USER_ID로 한다.
🔅 문제 풀이
-- (동일한 날짜, 회원 ID, 상품 ID) 1 DATA, 즉 각각 별개
-- ONLIN-OFFLINE 202203 판매 날짜, ID, 유저ID, 판매량 출력
-- OFFLINE USER_ID는 NULL로 출력
-- 판매일 기준 ASC, PRODUCT_ID ASC, USER_ID ASC
SELECT DATE_FORMAT(ON_OFFLINE_SALE.SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM (
(SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE)
UNION
(SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE)
) AS ON_OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
❗ 오답노트 / 필요한 지식