알고리즘(algo)/SQL

[SQL] 오프라인/온라인 판매 데이터 통합하기

dDong2 2023. 2. 8. 12:04
참고: https://school.programmers.co.kr/learn/courses/30/lessons/131537

 

✔️ 문제

 

 

설명은 다음과 같다.

 

 

✔️ 풀이

 

 

다음과 같은 문제가 있을 때,

 

1) ONLINE과 OFFLINE 테이블을 병합하고,

2) 2022년 3월의 데이터를 출력해야하며,

3) USER_ID값이 없는 것은 NULL로 출력하고,

4) 판매일을 기준으로 오름차순, 상품 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 >= "2022-03-01" AND SALES_DATE < "2022-04-01"
UNION
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") as SALES_DATE, PRODUCT_ID, NULL as USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE 
WHERE SALES_DATE >= "2022-03-01" AND SALES_DATE < "2022-04-01"
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;

 

SALES_DATE는 날짜 형식을 Y-m-d 형태로 출력을 진행하는데,

3월에 해당하는 조건으로 UNION을 통해 합집합을 수행한다.

이때, USER_ID가 없는 OFFLINE 테이블은 NULL로 데이터를 삽입하고,

마지막에 ORDER BY 조건절을 통해서 4번의 조건을 수행한다.

 

화이팅 💪