오프라인/온라인 판매 데이터 통합하기
문제 출처
코딩테스트 연습 - 오프라인/온라인 판매 데이터 통합하기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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을 사용할 수 있는데. 이땐 반드시 각 결과 집합은 동일한 열 수 와 데이터 형식을 가져야 한다는 점이다.
그렇기에 위에 쿼리문을 본다면 열수와 동일한 컬럼명 까지 맞춰주는 것을 볼 수 있다.
티스토리와 깃허브 홈
학스의 개발일지
안녕하세요 일상과 코딩공부를 올리고 있는 JAVA개발자 학스입니다. 저는 주로 JAVA, jQuery, PostgreSQL, HIVE을 다루고 있고 코딩테스트공부도 병행중입니다. 제 깃허브 주소인 https://github.com/hacs2772에
hacs2772.tistory.com
hacs2772 - Overview
개발왕 학스. hacs2772 has 8 repositories available. Follow their code on GitHub.
github.com
오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.
'프로그래머스' 카테고리의 다른 글
(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 |