코딩테스트/MySQL

[프로그래머스 Level 4] 오프라인/온라인 판매 데이터 통합하기 (MySQL)

최-코드 2025. 2. 14. 15:07

https://school.programmers.co.kr/learn/courses/30/lessons/131537

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

online_sale, offline_sale 테이블에 대해 합친 테이블이 필요하므로 union을 사용해야 한다. 이 때 user_id에 대해 중복되는 데이터가 없기 때문에 union을 쓰든 union all을 쓰든 상관없다.

offline_sale의 경우 user_id 컬럼이 없으므로 NULL로서 지정해주어서 컬럼의 개수를 맞춰줘야 한다.

 

 

with union_all_result as (
    select sales_date, product_id, user_id, sales_amount
    from online_sale
    where sales_date like '2022-03-%'
    union all
    select sales_date, product_id, NULL, sales_amount
    from offline_sale
    where sales_date like '2022-03-%'
)

select date_format(sales_date, '%Y-%m-%d') as sales_date, product_id, user_id, sales_amount
from union_all_result
order by sales_date, product_id, user_id