프로그래머스 SELECT 14. 오프라인/온라인 판매 데이터 통합하기
1. 문제 설명

2. 문제

3. 예시

4. 문제 풀이
-- 코드를 입력하세요
select date_format(sales_date, '%Y-%m-%d') sales_date, product_id, user_id, sales_amount
from (
select sales_date, product_id, user_id, sales_amount
from online_sale
union all
select sales_date, product_id, null user_id, sales_amount
from offline_sale
) as total_sale
where sales_date between '2022-03-01' and '2022-03-31'
group by sales_date, product_id, user_id
order by sales_date, product_id, user_id;
- 1 Line : sales_date, product_id, user_id, sales_amount를 조회
- sales_date의 date 표기에 유의 : date_format
- SELECT date_format(sales_date, ‘%Y-%m-%d’) sales_date, product_id, user_id, sales_amount
- 2 Line : ONLINE_SALE, OFFLINE_SALE의 테이블 조회 결과를 둘 다 합쳐서 가져와야 함
- UNION ALL 사용 : 별칭 부여 필요
- from ( ~~~~ ) as total_sale
- 3 Line : sales_date, product_id, user_id, sales_amount를 조회
- SELECT sales_date, product_id, user_id, sales_amount
- 4 Line : ONLINE_SALE 테이블에서 조회
- from ONLINE_SALE
- 5 Line : 아래 결과와 합함
- union all
- 6 Line : sales_date, product_id, user_id, sales_amount를 조회
- 오프라인 판매의 경우 user_id를 null로 처리
- SELECT sales_date, product_id, null user_id, sales_amount
- 7 Line : OFFLINE_SALE 테이블에서 조회
- from OFFLINE_SALE
- 8 Line : 2022년 3월 사이의 판매 데이터만 조회
- where sales_date between ‘2022-03-01’ and ‘2022-03-31’
- 9 Line : 동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재
- 날짜, 상품 ID, 회원 ID로 그룹화
- group by sales_date, product_id, user_id
- 10 Line : 판매일을 기준으로 오름차순, 상품 ID를 기준으로 오름차순, 유저 ID를 기준으로 오름차순 정렬
- order by sales_date, product_id, user_id
4. 결과 확인


Share article