문제상황은 ONLINE과 OFFLINE 의 데이터를 합치는 것인데 JOIN 으로 해결되는 문제가 아니기 때문에 UNION 을 쓴다.
문제 고려 사항은
- 각각의 테이블 3월 데이터로 1차 필터링 할 것
- OFFLINE 테이블엔 USER_ID 가 없으므로 NULL로 지정하고 하나의 열을 만들어줄 것
처음에는 UNION 뒤에 판매날짜와 PRODUCT_ID 로 그룹화해서 집계를 하는 것인가 했는데, 아니었다. 그냥 합치면 되는 것...
결국 UNION을 쓰는 것에 대해 물어본 것이었음..
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') like '2022-03%'
UNION
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') like '2022-03%'
ORDER BY 1,2,3
정답!
'coding > sql 코딩테스트' 카테고리의 다른 글
PERCENT_RANK() (0) | 2025.04.04 |
---|---|
[해커랭크] New Companies (0) | 2025.03.26 |
[리트코드] 1174. Immediate Food Delivery II (0) | 2025.02.20 |
[리트코드] 620. Not Boring Movies (0) | 2025.02.15 |
[리트코드] 619. Biggest Single Number (0) | 2025.02.15 |