문제
ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
💡 조건
sql 코드
(
SELECT DATE_FORMAT(ons.sales_date,'%Y-%m-%d')as sales_date, product_id, user_id, sales_amount
FROM online_sale ons
WHERE sales_date like '2022-03%'
UNION
SELECT DATE_FORMAT(off.sales_date,'%Y-%m-%d')as sales_date, product_id, NULL as user_id, sales_amount
FROM offline_sale off
WHERE sales_date like '2022-03%'
)
ORDER BY sales_date, product_id, user_id
📝 구조가 같은 두 테이블, 또는 두 조회 결과를 합하여 합집합처럼 만들어 결과를 출력
UNION : 중복 제거 O
UNION ALL : 중복 제거 X
WHERE sales_date like '2022-03%'
null as user_id
로 표시 SELECT DATE_FORMAT(off.sales_date,'%Y-%m-%d')as sales_date,
product_id, NULL as user_id, sales_amount
DATE_FORMAT
사용 SELECT DATE_FORMAT(ons.sales_date,'%Y-%m-%d')as sales_date,
product_id, user_id, sales_amount
ORDER BY sales_date, product_id, user_id
이 문제는 offline_sale에 3월에 해당하는 데이터가 없어서 아쉽다. 결과를 더 명확하게 보기 위해서 3월 데이터도 추가되면 좋겠다.