1. 문제 풀이 아이디어
UNION ALL
을 사용하여 온라인 판매(online_sale
)와 오프라인 판매(offline_sale
) 데이터를 통합한 뒤, 2022년 3월의 데이터를 필터링하고 그룹화하여 총 판매 금액을 구해 문제를 해결한다.
2. 나의 정답 코드
WITH a AS (
SELECT
sales_date,
product_id,
user_id,
sales_amount
FROM
online_sale
UNION ALL
SELECT
sales_date,
product_id,
NULL AS user_id,
sales_amount
FROM
offline_sale
)
SELECT
LEFT(sales_date, 10) sales_date,
product_id,
user_id,
SUM(sales_amount) sales_amount
FROM
a
WHERE
LEFT(sales_date, 7) = '2022-03'
GROUP BY
sales_date,
product_id,
user_id
ORDER BY
sales_date,
product_id,
user_id;
3. 정리
WITH
절에서 온라인 판매(online_sale
)와 오프라인 판매(offline_sale
) 데이터를 통합한다.
UNION ALL
을 사용하여 성능을 최적화하며, 오프라인 판매는user_id
가 없으므로NULL
로 처리한다.
LEFT(sales_date, 7) = '2022-03'
조건을 사용하여 2022년 3월의 데이터만 필터링한다.
GROUP BY sales_date, product_id, user_id
를 통해 날짜, 상품, 사용자별 총 판매 금액을 계산한다.
ORDER BY sales_date, product_id, user_id
로 정렬한다.
Share article