[SQL] 오프라인/온라인 판매 데이터 통합하기(프로그래머스)

2024. 5. 4. 15:51코딩 테스트

문제

 

 

개념
  • UNION, UNION ALL
    • 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다.(수직 결합)
      • JOIN은 수평 결합
    • UNION은 중복된 값을 제거하고 UNION ALL은 제거하지 않는다.
    • 컬럼명이 동일해야 한다. (같지 않을 경우 AS 를 이용해서 동일하게 맞춰줘야 한다.)
    • 컬럼별로 데이터 타입이 동일해야 한다.
    • 출력할 컬럼의 개수가 동일해야 한다.
  • NULL로 새로운 열을 생성할 수 있다. 

 

정답
SELECT 
    DATE_FORMAT(SALES_DATE,'%Y-%m-%d') SALES_DATE, 
    PRODUCT_ID, 
    USER_ID, 
    SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'

UNION ALL

SELECT 
    DATE_FORMAT(SALES_DATE,'%Y-%m-%d') SALES_DATE, 
    PRODUCT_ID, 
    NULL AS USER_ID,
    SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'

ORDER BY 1, 2, 3