sql

mysql - 프로그래머스 131537 / 오프라인/온라인 판매 데이터 통합하기

kdozlo 2024. 9. 2. 11:43

mysql - 프로그래머스 131537 / 오프라인/온라인 판매 데이터 통합하기
lv4

구현 방법

두 테이블의 데이터를 한번에 볼 수 있도록 묻는 문제였다. 문제를 보고 한쪽 테이블에는 없는 칼럼이 있는걸 보고 full outer join 사용하면 된다고 생각했다.
하지만 mysql은 따로 full outer join 기능을 제공하지 않고 있어 union을 사용하여 풀기로 했다.
OFFLINE_SALE에는 user_id 칼럼이 없으므로 이를 null로 줘서 칼럼수를 맞추고 union 하여 풀었다.

코드

    select
        DATE_FORMAT(SALES_DATE, "%Y-%m-%d") as SALES_DATE,
        PRODUCT_ID,
        USER_ID,
        SALES_AMOUNT
    from
        ONLINE_SALE ons
    where
        year(sales_date) = 2022 and month(sales_date) = 3
union
    select
        DATE_FORMAT(SALES_DATE, "%Y-%m-%d") as SALES_DATE,
        PRODUCT_ID,
        null as 'user_id',
        SALES_AMOUNT
    from
        OFFLINE_SALE
    where
        year(sales_date) = 2022 and month(sales_date) = 3
order by
    sales_date, product_id, user_id
;
image