본문 바로가기
코딩테스트/SQL

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

by 박창준 2024. 11. 14.

 

문제 해석

1. 오프라인 데이터와 온라인 데이터를 통합

2. 2022년 3월 데이터만 출력

3. 상품 판매 일, 상품 ID, 유저 ID 순으로 내림차순 정렬

 

문제 풀이

1. UNION을 사용해서 온라인, 오프라인 데이터를 통합한 테이블을 만든다.

2. 서브쿼리를 활용해 위에서 만든 테이블을 인라인 뷰에서 활용한다.

3. 판매일이 2022-03-01일부터 2022-03-31일 인 데이터를 뽑는다.

4. 정렬한다.

 

SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM (
	SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
		FROM ONLINE_SALE 
	UNION 
	SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
		FROM OFFLINE_SALE 
) AS SALES_DATA
WHERE SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
ORDER BY SALES_DATE , PRODUCT_ID, USER_ID

 

 

처음엔 UNION ALL로 풀었지만 생각해보니 오프라인데이터와 온라인 데이터가 중복될 일이 없으니 (오프라인은 USER_ID가 NULL임) UNION으로 풀었다.

댓글