728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131537
오프라인에 들어간 데이터와 온라인에 들어간 데이터를 각각 뽑아 합치는 문제이다.
나는 처음에 이 문제가 Left Outer Join을 이용해서 문제를 푸는 건가 싶어서 고민을 했었는데, 그런 유형의 문제가 아니라,
그냥 각각의 데이터를 뽑아 합치는 문제였다.
합치는 명령어는 UNION or UNION ALL이 둘 중 하나를 사용하는 것으로 알고 있다.
UNION DISTINCT
: 쿼리의 결과를 합치기는 합치는데 중복된 행은 제거를 한다
UNION ALL
: 쿼리의 결과를 중복도 제거하지 않고 합친다
코드
SELECT date_format(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE year(SALES_DATE) = 2022 AND month(SALES_DATE) = 3
UNION ALL
SELECT date_format(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE year(SALES_DATE) = 2022 AND month(SALES_DATE) = 3
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
'DB > MySQL' 카테고리의 다른 글
SELECT - 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.02.22 |
---|---|
SELECT - 상위 n개 레코드 구하기 (0) | 2023.02.22 |
SELECT - 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.02.22 |
SELECT - 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.02.22 |
SELECT - 평균 일일 대여 요금 구하기 (0) | 2023.02.22 |
댓글