SQL/SELECT
[프로그래머스 SQL] Lv.4 - 오프라인/온라인 판매 데이터 통합하기
이런개발
2025. 3. 6. 07:45
https://school.programmers.co.kr/learn/courses/30/lessons/131537
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
- 두 테이블의 데이터를 합쳐야 하므로 UNION ALL 키워드를 사용한다.
- 먼저 ONLINE_SALE 테이블에서 2022년 3월인 행을 필터링해 판매 날짜, 상품 ID, 유저 ID, 판매량을 조회한다.
- 그리고 OFFLINE_SALE 테이블에서 2022년 3월인 행을 필터링해 판매 날짜, 상품 ID, 유저 ID, 판매량을 조회한다. 이 테이블에는 유저 ID가 없으므로 그냥 NULL로 조회한다.
- 두 테이블 모두 판매 날짜의 경우 DATE_FORMAT 키워드로 포맷을 맞춰준다.
- UNION ALL 키워드로 두 테이블의 조회 결과를 합친다.
- 판매일, 상품 ID, 유저 ID 순서대로 오름차순 정렬한다.
SELECT
DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS 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') AS SALES_DATE,
PRODUCT_ID,
NULL,
SALES_AMOUNT
FROM
OFFLINE_SALE
WHERE
SALES_DATE LIKE '2022-03%'
ORDER BY
1, 2, 3