프로그래밍/MySQL
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기
뭉이씨
2025. 2. 10. 12:55
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131537
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
SELECT
date_format(SALES_DATE,'%Y-%m-%d') SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM (
SELECT
SALES_DATE,
PRODUCT_ID,
NULL AS USER_ID,
SALES_AMOUNT
FROM OFFLINE_SALE OFS
UNION ALL
SELECT
SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM ONLINE_SALE ONS
) AS S
WHERE MONTH(SALES_DATE)=3
ORDER BY SALES_DATE, PRODUCT_ID,USER_ID,SALES_AMOUNT
해설
- 포인트는 UNION ALL 로 두 테이블을 합치는 것이었다. 이때, 두 테이블에서 SELECT 해오는 항목들이 같아야한다. OFFLINE_SALE 테이블에는 USER_ID 항목이 존재하지 않으므로 NULL로 넣어준다.
- 날짜가 DATE 형식의 자료형으로 들어가 있을 때에는 MONTH(...) 형식으로 월 추출이 가능하다.
- 날짜를 형식에 맞춰 SELECT 해주기 위해 date_format(테이블명, '%Y-%m-%d') 처리를 해주었다. %Y 대신에 %y를 사용하면 연도의 마지막 두자리만 저장된다.