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

지누초이·2024년 3월 27일

프로그래머스

목록 보기
15/37
post-thumbnail

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131537?language=mysql


노트

  • UNION
    • 여러 개의 SELECT 문의 결과를 단일 결과로 연결할 때 사용
    • DISTINCT를 쓰지 않아도 합친 결과에서 중복되는 행은 하나만 표시
      • 중복을 제거하는 것을 원하지 않는다면 UNION ALL 사용
    • UNION 내의 각 SELECT 문은 같은 수의 컬럼을 가져야 하고 동일한 순서로 있어야 함
    • JOIN은 수평결합인 반면, UNION은 수직 결합
  • 임의로 NULL 처리
    • NULL AS 컬럼 을 통해, 해당 컬럼의 값을 NULL로 처리하기 위함
    • 이 예제에서는 UNION 연산을 위해 컬럼 수를 맞추려고 NULL 처리

정답

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

UNION

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

더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗

0개의 댓글