-
프로그래머스 - 오프라인/온라인 판매 데이터 통합하기SQL 문제 2024. 1. 9. 14:50
오프라인/ 온라인 판매 데이터 통합하기
ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요.
OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.문제를 읽고서 처음에 해낸 생각은 JOIN을 써야겠다라고 생각해다.
코드를 작성하다보니 뭔가 이상했다. 두개의 테이블을 JOIN을 하면 코드가 안나오기 때문이다.
그래서 문제를 다시 읽고 해석해보니
각 테이블의 SALE_DATE가 3월인 조건이 있었다.
온라인/오프라인 판매일자가 3월인 데이터를 뽑기 위해서는
테이블 별로 3월에 판매된 데이터를 필터링 하고 합치면 된다.
SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') SALES_DATE , PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ONLINE_SALE WHERE DATE_FORMAT(SALES_DATE,'%Y-%m') = '2022-03' UNION SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT FROM OFFLINE_SALE WHERE DATE_FORMAT(SALES_DATE,'%Y-%m') = '2022-03' ORDER BY SALES_DATE ASC, PRODUCT_ID ASC ,USER_ID ASC
여기서는 UNION으로 두개의 테이블을 합쳤다.
OFFLINE테이블에서 USER_ID는 없는 열이므로 NULL값으로 대체하였다
https://school.programmers.co.kr/learn/courses/30/lessons/131537.
'SQL 문제' 카테고리의 다른 글
프로그래머스 - 입양 시각 구하기(2)_set @ (0) 2024.01.09 프로그래머스 - 조건에 부합하는 중고거래 댓글 조회하기 (0) 2024.01.09 프로그래머스 - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) 2024.01.08 프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) 2024.01.08 프로그래머스 - 우유와 요거트가 담긴 장바구니 (1) 2024.01.05