오프라인/온라인 판매 데이터 통합하기

는는·2023년 3월 18일
0

SQL - 문제 풀이

목록 보기
43/77

오프라인/온라인 판매 데이터 통합하기

https://school.programmers.co.kr/learn/courses/30/lessons/131537

join은 공통 칼럼이 있어야 합쳐 줄 수 있어요!

공통 칼럼이 없기 때문에 두 테이블을 union으로 합쳐 줘야하는데요!

SELECT 컬럼
FROM 테이블 1
WHERE 조건

UNION

SELECT 컬럼
FROM 테이블 2
WHERE 조건

이런 식으로 합쳐줘야합니다.

첫번째 실패

(SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, USER_ID,SALES_AMOUNT 
FROM ONLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31"

UNION

SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, SALES_AMOUNT 
FROM OFFLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31")

이런 식으로 쓰게 되면

SQL 실행 중 오류가 발생하였습니다.
The used SELECT statements have a different number of columns

이라는 결과가 나오는 데요. 이건 USER_ID 이라는 컬럼이 없기 때문입니다. 그래서 USER_ID 라는 컬럼을 하나 만들어 줍니다.

그러고 판매일 기준으로 오름차순, 상품 id 별로 오름차순, 유저 id 별로 오름차순을 해주면 정답입니다.

(SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, USER_ID,SALES_AMOUNT 
FROM ONLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31"

UNION

SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT 
FROM OFFLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31")
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID

0개의 댓글

관련 채용 정보