728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131537
정답 코드
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
UNION
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE "2022-03%"
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
# NULL AS USER_ID -> USER_ID가 없으므로 NULL값으로 채운다
SELECT DATE_Format(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE Month(SALES_DATE) = 3
UNION
SELECT DATE_Format(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, Null as USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE Month(SALES_DATE) = 3
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
SELECT DATE_FORMAT(SALES_DATE,"%Y-%m-%d") SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM ONLINE_SALE
WHERE sales_date >= '2022-03-01' and sales_date < '2022-04-01'
UNION ALL
SELECT DATE_FORMAT(SALES_DATE,"%Y-%m-%d") SALES_DATE,
PRODUCT_ID,
NULL AS USER_ID,
SALES_AMOUNT
FROM OFFLINE_SALE
WHERE sales_date >= '2022-03-01' and sales_date < '2022-04-01'
ORDER BY SALES_DATE , PRODUCT_ID , USER_ID
union 연산
중복값은 하나만 추가하여 더하여 새로운 테이블을 만든다.
여러 개의 SELECT 문의 결과를 단일 결과 세트로 연결 표현할떄 사용
(합친 결과에서 중복되는 행은 하나만 표시합니다. => DISTINCT 키워드를 따로 명시하지 않아도 기본적으로 중복되는 레코드를 제거)
- UNION 내의 각 SELECT 문은 같은 수의 열을 가져야 한다.
- 각각 SELECT 문의 열은 또한 동일한 순서로 있어야 한다.
- 열은 호환되는 데이터 형식을 가져야 한다.
# 3개 합치는 법
SELECT 열1, 열2, ...
FROM 테이블1
WHERE 조건
UNION
SELECT 열1, 열2, ...
FROM 테이블2
WHERE 조건
UNION
SELECT 열1, 열2, ...
FROM 테이블3
WHERE 조건;
728x90
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[MySQL] 프로그래머스 273711. 업그레이드 된 아이템 구하기 (0) | 2024.02.21 |
---|---|
[MySQL] 프로그래머스 131537. 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.02.20 |
[MySQL] 프로그래머스 131536. 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.02.20 |
[MySQL] 프로그래머스 131118. 서울에 위치한 식당 목록 출력하기 (0) | 2024.02.20 |
[MySQL] 프로그래머스 164673. 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.02.20 |