programmers

오프라인/온라인 판매 데이터 통합하기 [MYSQL]

Meluu_ 2026. 1. 3. 09:25

 

🧫 문제 분석

✔️ 출처

오프라인/온라인 판매 데이터 통합하기 level 4

📖 문제

 

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

 

 

❗ 오답노트 / 필요한 지식