오프라인/온라인 판매 데이터 통합하기
문제 출처
코딩테스트 연습 - 오프라인/온라인 판매 데이터 통합하기 | 프로그래머스 스쿨 (programmers.co.kr)
Code
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM (
SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
UNION ALL
SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
) A
WHERE SALES_DATE LIKE CONCAT("2022-03", "%")
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
#ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서
#---> FROM 테이블을 알려주고있다.
#2022년 3월의
#---> WHERE 조건문을 알려주고있다.
#오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력
#--->SELECT문을 알려주고있다.
#OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시
#--->SELECT 조건문을 말해주고있다.
#판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
#--->정렬방법에대해 알려주고있다.
Code설명 & TIPS
풀이 방법!
ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서
---> FROM 테이블을 알려주고있다.
2022년 3월의
---> WHERE 조건문을 알려주고있다.
오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력
--->SELECT문을 알려주고있다.
OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시
--->SELECT 조건문을 말해주고있다.
판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
--->정렬방법에대해 알려주고있다.
설명!
어렵고 까다로운 조건은 없었으나 다만 여태까지 안다뤄본 UNION이라 조금 당황했을 수도 있다.
나도 처음엔 JOIN으로 하였으나 추후 UNION으로 변경하게 되었다.
왜냐하면 서로다른 테이블을 말그대로 합치는 것이기 때문이다 말그대로 합치는것
JOIN처럼 연관된 것들을 이용한 조건으로 합치는 것이 아닌 말그대로
UNION 합치는 것이였기 때문이다.
하지만 UNION을 사용하기엔 조건이 따른다.
서로 다른 테이블 또는 쿼리에서 가져온 데이터를 하나의 결과로 결합하려는 경우 UNION을 사용할 수 있는데. 이땐 반드시 각 결과 집합은 동일한 열 수 와 데이터 형식을 가져야 한다는 점이다.
그렇기에 위에 쿼리문을 본다면 열수와 동일한 컬럼명 까지 맞춰주는 것을 볼 수 있다.
티스토리와 깃허브 홈
오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.
'프로그래머스' 카테고리의 다른 글
(MySQL / 프로그래머스) 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2023.09.20 |
---|---|
(MySQL / 프로그래머스) 나이 정보가 없는 회원 수 구하기 (0) | 2023.09.15 |
(MySQL / 프로그래머스) 저자 별 카테고리 별 매출액 집계하기 (0) | 2023.09.14 |
(MySQL / 프로그래머스) NULL 처리하기 (0) | 2023.09.14 |
(MySQL / 프로그래머스) 이름이 있는 동물의 아이디 (0) | 2023.09.14 |