알고리즘 문제 풀이/프로그래머스

[SQL 고득점 Kit] SELECT - 오프라인/온라인 판매 데이터 통합하기

파란색 가운 2024. 6. 27. 23:31

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

 

프로그래머스

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

programmers.co.kr

난이도 : 중

JOIN으로는 못 푸는걸 알아서 검색해서 합치기 "UNION"이 있는걸 기억해냈다!

 

SELECT DATE_FORMAT(ONLINE_SALE.SALES_DATE,"%Y-%m-%d") AS "SALES_DATE",ONLINE_SALE.PRODUCT_ID,ONLINE_SALE.USER_ID,ONLINE_SALE.SALES_AMOUNT
FROM ONLINE_SALE 
WHERE ONLINE_SALE.SALES_DATE LIKE "2022-03-%"
UNION
SELECT DATE_FORMAT(OFFLINE_SALE.SALES_DATE,"%Y-%m-%d") AS "SALES_DATE",OFFLINE_SALE.PRODUCT_ID, NULL AS "USER_ID",OFFLINE_SALE.SALES_AMOUNT
FROM OFFLINE_SALE
WHERE OFFLINE_SALE.SALES_DATE LIKE "2022-03-%"
ORDER BY 1 ASC,2 ASC, 3 ASC;

 

1. UNION으로 해결은 하되, 위에서 DATE_FORMAT을 사용했다면 YEAR(ONLINE_SALE.SALES_DATE) = 2022 ANd MONTH(ONLINE_SALE.SALES_DATE) = 3을 사용해도 되었을 것

2. NULL AS "USER_ID" -> 이 테이블에서 USER_ID를 무조건 NULL으로 지정하는 행위

3. ORDER BY 1,2,3 -> 1번째 열, 2번째 열, 3번째 열을 의미 (모두 오름차순이므로 ASC 사용)