오구의코딩모험

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

프로그래밍 공부/프로그래머스

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

오구.cpp 2023. 1. 4. 19:05
반응형

 

 

[SQL 고득점 KIT - SELECT]

 

 

조건과 정렬 값 추출은 어렵지 않았지만,

추출한 두 테이블을 UNION ALL로 합치는 게 중요하였다.

 

UNION은 두 개 이상의 SELECT문의 행을 합치는 역할,

UNION ALL은 중복을 포함한 모든 값을 합치는 역할이다.

즉, UNION은 중복된 행은 제거하고 하나만 합친다.

 

위의 문제에서는 동일한 데이터가 없다고하니 UNION, UNION ALL 아무거나 사용해도 괜찮다.

 

여기서 UNION은 합치려는 두 테이블의 열의 개수가 같아야하는데,

OFFLINE_SALE에는 USER_ID가 없으므로 NULL 값인 열을 USER_ID 이름으로 생성해서 합쳐줬다.

 

 

## 온라인 매장
(SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE DATE_FORMAT(SALES_DATE,'%Y-%m') = '2022-03')

UNION ALL

## 오프라인 매장
(SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE DATE_FORMAT(SALES_DATE,'%Y-%m') = '2022-03')

## 정렬
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
반응형
Comments