코딩테스트/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