SQL/프로그래머스 문제풀이

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

너지살 2024. 4. 2. 17:15

 

 

 

문제 출저

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

문제 풀이

ONLINE_SALE, OFFLINE_SALE 두 테이블에서 2022년 3월의 오프라인, 온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저 ID, 판매량을 출력해야 한다. 

오프라인, 온라인 상품을 모두 출력하므로 UNION 을 사용한다. 

UNION의 주의 사항은 두 테이블의 열을 일치시켜야 하는 것이다. 

OFFLINE_SALE 에서는 유저ID가 없으므로 NULL을 표시 해야한다. (NULL AS USER_ID )

2022년 3월의 데이터를 가져오기 위해 WHERE를 사용한다. 

 

 

 

SQL

SELECT 
    DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
    PRODUCT_ID,
    USER_ID,
    SALES_AMOUNT
FROM 
    ONLINE_SALE 
WHERE 
    YEAR(SALES_DATE) = '2022' AND MONTH(SALES_DATE) = '3'
UNION
SELECT
    DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
    PRODUCT_ID,
    NULL AS USER_ID,
    SALES_AMOUNT
FROM 
    OFFLINE_SALE
WHERE 
    YEAR(SALES_DATE) = '2022' AND MONTH(SALES_DATE) = '3'
ORDER BY 
    SALES_DATE, PRODUCT_ID, USER_ID