공부 일지/문제풀이

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

Joshbla 2023. 11. 22. 13:46

코딩테스트 연습 - 오프라인/온라인 판매 데이터 통합하기

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

 

프로그래머스

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

programmers.co.kr

문제 설명

문제 풀이

생각 과정

UNION연산자를 완전히 잊고있었는데 이번 문제를 풀면서 다시 공부했다..

UNION은 두가지 쿼리 결과를 합치는 기능을 한다.

기본적으로 UNION을 하면 쿼리결과가 중복을 제거하고 합쳐진다.

UNION ALL을 하면 중복을 제거하지 않고 합쳐진다.

중복제거 연산이 들어가지 않기때문에 속도는 UNION ALL이 조금 더 빠르다고 한다.

 

사용법은 

SELECT * FROM A WHERE ~~

UNION

SELECT * FROM B WHERE ~~

ORDER BY ~

와 같은 형식으로 사용한다.

구현

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 AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE 
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC