Notice
Recent Posts
Recent Comments
Link
bdfgdfg
SQL 오프라인/온라인 판매 데이터 통합하기 본문
반응형
SELECT date_format(sales_date, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE Between N'2022-03-01' and N'2022-03-31'
UNION ALL
SELECT date_format(sales_date, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, NULL, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE Between N'2022-03-01' and N'2022-03-31'
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC;
문제를 보자마자 UNION All 이겠거니 했다.
근데 자꾸 오답이 떠서 뭐가 문제인지 알 수가 없었음 ㅠ
확인해보니.. date 출력이 시간까지 출력되고있어서 그랬던것.
또한 하나 알게된건 UNION을 하기 위해서 조회할 칼럼의 수와 데이터 타입이 동일(BigInt, Int같은건 괜찮은듯?)해야한다!
1. UNION/UNION ALL이란?
- 두 개의 SELECT문을 합치는 것을 말합니다.
- 두 개의 SELECT문을 합치는 것이기때문에 제약조건이 많습니다.
2. UNION/UNION ALL의 제약조건
- 상위SQL문과 하위SQL문의 컬럼 개수가 동일해야 합니다.
- 상위SQL문과 하위SQL문의 컬럼 위치가 동일한 컬럼들이 결합이 됩니다.
※ 컬럼 이름만 동일하다고 결합이 되지 않습니다.
- 컬럼명은 최상위 SQL문의 명칭을 따르게 됩니다.
3. UNION과 UNION ALL의 차이점
- UNION은 중복된 행을 제거하지만 UNION ALL은 중복된 행을 허용합니다.
- 중복된 행을 꼭 제거해야하는 경우가 아니라면 보통 UNION ALL을 사용합니다.
- 실제 환경에서는 UNION을 사용하느 경우는 극히 드뭅니다.
반응형
'CS > SQL' 카테고리의 다른 글
SQL 강원도에 위치한 생산공장 목록 출력하기 (0) | 2022.12.19 |
---|---|
SQL 아픈 동물찾기 (0) | 2022.12.18 |
SQL 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2022.12.14 |
SQL 인기있는 아이스크림 (이중 정렬) (0) | 2022.12.13 |
Join (0) | 2022.09.28 |
Comments