'제수기' - '제발 수업내용을 기억해라'
# 여러 개의 질의결과(result set)를 컬럼끼리 연결하여 하나의 결과집합(relation)을 만드는 방식
# join은 행끼리 연결했었음.
# 조건
-- SELECT 절의 "컬럼 수가 동일" 해야 한다.
-- ORDER BY 절은 마지막 결과집합에 딱 한번 사용가능하다.
-- 컬럼명이 다른 경우, 첫번째 entity의 컬럼명을 결과집합에 반영한다.
-- SELECT 절의 동일 위치에 타입이 다른 경우, 해당 컬럼은 오류없이 문자열 컬럼으로 변환처리된다.
# 종류
-- 1. UNION 합집합 (중복제거)
-- 2. UNION ALL 합집합
-- 3. INTERSECT 교집합 (MySQL 지원 안함)
-- 4. MINUS 차집합 (MySQL 지원 안함)
-- union all : 위/아래 테이블 연결
-- union : 위/아래 테이블 연결, 중복된 행을 제거함
union all
이 union
보다 더 빠른 연산을 한다. 중복된 걸 제거하지 않고 그냥 가져다가 붙이는 거니까.extract(year_month)
를 활용한다.RDB도 처리할 수 있는 데이터 규모에 한계가 있기 때문에, 판매량 데이터를 월별로 나눠놨다가 합칠 때만 union
을 써서 쓰는 경우가 많다.
1. 2달 전, 1달 전 데이터 복사붙여넣기 해놓고
2. 삭제해서 이번달 데이터만 있는 테이블을 만든다.
create table ~ as ~
를 활용해서 2달 전, 1달 전, 이번달 데이터를 분리한다.
delete
로 이번달 데이터를 제외한 나머지 월별 데이터를 삭제한다.
3개의 테이블이 똑같은 구조로 구분된 걸 확인할 수 있다.
union all
을 사용해서 3달치 데이터를 합쳐주면 된다.