[SQL 문제 풀기] 오프라인/온라인 판매 데이터 통합하기(13157)

lhs's avatar
Feb 20, 2025
[SQL 문제 풀기]  오프라인/온라인 판매 데이터 통합하기(13157)
 

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

LHS's Study Space