SQL/SELECT

[프로그래머스 SQL] Lv.4 - 오프라인/온라인 판매 데이터 통합하기

이런개발 2025. 3. 6. 07:45

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 풀이

  1. 두 테이블의 데이터를 합쳐야 하므로 UNION ALL 키워드를 사용한다.
  2. 먼저 ONLINE_SALE 테이블에서 2022년 3월인 행을 필터링해 판매 날짜, 상품 ID, 유저 ID, 판매량을 조회한다.
  3. 그리고 OFFLINE_SALE 테이블에서 2022년 3월인 행을 필터링해 판매 날짜, 상품 ID, 유저 ID, 판매량을 조회한다. 이 테이블에는 유저 ID가 없으므로 그냥 NULL로 조회한다.
  4. 두 테이블 모두 판매 날짜의 경우 DATE_FORMAT 키워드로 포맷을 맞춰준다.
  5. UNION ALL 키워드로 두 테이블의 조회 결과를 합친다.
  6. 판매일, 상품 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 LIKE '2022-03%'
    
UNION ALL

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