FULL JOIN같지만
두개의 테이블을 빈칸까지 모두 가지올 때는 UNION ALL을 쓰자
중복값까지 모두 조회 된다.
- 오프라인/온라인 판매 데이터 통합하기
문제
ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
-- 코드를 입력하세요
SELECT *
FROM
(SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE,
PRODUCT_ID,
USER_ID ,
SALES_AMOUNT
FROM ONLINE_SALE O
UNION ALL
SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE,
PRODUCT_ID,
NULL AS USER_ID, -- 빈칸은 모두 널값으로 한다.
SALES_AMOUNT
FROM OFFLINE_SALE ) A
-- UNION ALL 후에 3월달 조건이 시작되기 때문에 온라인/오프라인 전체 데이터에 조건이 대입된다.
WHERE MONTH(A.SALES_DATE) REGEXP '^3' -- ^시작 => 조회는 03이지만 DATE형식이라서 ^03이라하면 조회가 안된다.\
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
'SQL > 프로그래머스' 카테고리의 다른 글
SQL 프로그래머스_6일차_1 JOIN ,GROUP BY ,RANK(), 이중 서브쿼리 (0) | 2023.01.03 |
---|---|
SQL 프로그래머스 5일차_2 GROUP BY , DISTINCT , NOT 컬럼 IS NULL (0) | 2023.01.03 |
SQL JOIN 할때 서브쿼리로 조인하기 (0) | 2023.01.02 |
SQL 프로그래머스_4일차_2 GROUP BY , FIELD, COUNT (0) | 2022.12.31 |
SQL 프로그래머스 4일차 _1 GROUP BY ,DATE (0) | 2022.12.31 |