본문 바로가기
언어

UNION ALL

by 땅호720 2023. 12. 12.
-- 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE,
        PRODUCT_ID,
        USER_ID,
        SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE like '2022-03%'
UNION ALL
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE,
        PRODUCT_ID,
        NULL USER_ID,
        SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE like '2022-03%'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID

 

'동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재'하므로 가능

만약 온오프라인 모두에서 동일한 날짜와 상품 ID 조합을 세야한다면 (user_id 고려 X)

-- 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력
SELECT SALES_DATE, PRODUCT_ID, SUM(SALES_AMOUNT) SALES_AMOUNT
FROM (SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE,
                PRODUCT_ID,
                SALES_AMOUNT
        FROM ONLINE_SALE
        WHERE SALES_DATE like '2022-03%'
        UNION ALL
        SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE,
                PRODUCT_ID,
                SALES_AMOUNT
        FROM OFFLINE_SALE
        WHERE SALES_DATE like '2022-03%')
GROUP BY SALES_DATE, PRODUCT_ID
ORDER BY SALES_DATE, PRODUCT_ID

이렇게 짜면 되지 않을까나..?

'언어' 카테고리의 다른 글

list.count(n)  (0) 2023.12.12
WITH RECURSIVE  (0) 2023.12.12
GROUP_CONCAT  (0) 2023.12.08
DATEDIFF  (1) 2023.12.08
CONCAT_WS  (1) 2023.12.08