7.1. 집합 연산자

집합 연산자는 SQL 쿼리에서 둘 이상의 쿼리 결과를 결합하거나 조작하는 데 사용됩니다. 주요 집합 연산자로는 UNION, INTERSECT, **EXCEPT**가 있습니다.

  1. UNION 연산자: UNION 연산자는 두 개 이상의 쿼리 결과를 합쳐 하나의 결과 집합으로 만듭니다. 해당 연산자를 사용하면 여러 데이터 소스에서 데이터를 가져와서 하나의 테이블처럼 사용할 수 있습니다. 예를 들어, 두 개의 테이블에서 고객 목록을 가져와 하나의 목록으로 합칠 수 있습니다.
  2. INTERSECT 연산자: INTERSECT 연산자는 쿼리 결과 간에 공통된 행 즉, 교집합을 반환합니다. 해당 연산자는 공통 요소를 식별하거나 비교하는 데 사용됩니다. 예를 들어, 두 개의 테이블에서 공통된 고객 목록을 찾을 수 있습니다.
  3. EXCEPT 연산자: EXCEPT 연산자는 첫 번째 쿼리 결과에서 두 번째 쿼리 결과를 제외한 결과를 반환합니다. 즉, 두 결과 집합의 차집합을 반환합니다. 이 연산자는 두 집합 간의 차이를 확인하거나 필터링하는 데 사용됩니다. 예를 들어, 첫 번째 테이블의 데이터에서 두 번째 테이블의 데이터를 제외하고 싶을 때 유용합니다.

출처: Weniv

출처: Weniv

7.2. UNION (A∪B)

소개

두 집합의 모든 원소들을 가져오는 합집합의 개념입니다. BigQuery에서는 합집합 연산자로 UNION ALL 그리고 UNION DISTINCT 연산자가 있습니다.

**UNION ALL**은 두 개 이상의 쿼리 결과를 결합할 때 사용되며, 중복된 행을 제거하지 않습니다. 즉, 모든 결과 집합의 행을 포함하는 데 중복이 발생하더라도 중복된 행을 그대로 유지합니다. 이 연산자를 사용하면 데이터가 중복될 수 있지만, 처리 속도가 빠르며 결과 집합의 크기가 더 크게 될 수 있습니다.

반면 UNION DISTINCT 의 경우 두 개 이상의 쿼리 결과를 결합할 때 사용되며, 중복된 행을 제거합니다. 따라서 결과 집합에는 중복된 행이 포함되지 않습니다. 이 연산자를 사용하면 중복된 데이터가 필요 없을 때 유용합니다. 중복된 데이터를 제거하므로 결과 집합의 크기가 더 작게 유지됩니다.

사용시 주의해야 할 점으로는 합칠 쿼리들의 SELECT 절에서 명시하는 컬럼의 개수와 데이터 타입은 동일해야 합니다. 또한 조회된 테이블의 컬럼명은 첫 번째 쿼리의 SELECT 절 컬럼명으로 표시됩니다.

SELECT
			column1
FROM Table1
UNION ALL
SELECT
			column1
FROM Table2
ORDER BY 1;
SELECT
			column1
FROM Table1
UNION DISTINCT
SELECT
			column1
FROM Table2
ORDER BY 1;