ARRAY_UNION_AGG
ARRAY_UNION_AGG (배열 합집합 집계)
컬럼의 입력 배열들에서 고유 값들의 합집합을 담은 ARRAY를 반환해요. ARRAY_UNIQUE_AGG가 만든 배열들의 고유 값을 집계하는 데 이 함수를 사용할 수 있어요.
본문
구문
집계 함수:
ARRAY_UNION_AGG( <column> )
윈도우 함수:
ARRAY_UNION_AGG( <column> ) OVER ( [ PARTITION BY <expr> ] )
OVER 절에 대한 자세한 내용은 윈도우 함수 구문 및 사용법을 참고해요.
인자
column
고유 값을 가진 배열들(ARRAY_UNIQUE_AGG가 만든 배열들)을 담고 있는 컬럼이에요.
반환 값
이 함수는 column의 배열들에서 고유 값들을 담은 배열을 반환해요. 배열 안의 값들은 특별한 순서가 없으며, 순서는 결정적이지 않아요.
이 함수는 멀티셋(multiset) 의미론을 사용한다는 점에 주의하세요. 즉, 단일 입력 배열에서 특정 값이 나타나는 최대 횟수가 출력 배열에서 그 값이 나타나는 횟수를 결정해요. 예시를 참고해요.
이 함수는 column과 column의 배열 안의 NULL 값을 무시해요. column에 NULL 값만 있거나 column을 담은 테이블이 비어 있으면 함수는 빈 배열을 반환해요.
사용 참고 사항
- 이 함수는 다음 두 유형의 함수로 사용할 수 있어요:
- 집계 함수
- 윈도우 함수
- 윈도우 함수로 호출되면 명시적 윈도우 프레임을 지원하지 않아요.
- 구조화 배열(structured array)을 함수에 전달하면 함수는 같은 타입의 구조화 배열을 반환해요.
예시
집계: 배열의 합집합
다음 예시는 두 배열의 고유 값들의 합집합을 어떻게 반환하는지 보여줘요:
CREATE TABLE union_test(a array);
INSERT INTO union_test
SELECT PARSE_JSON('[ 1, 1, 2]')
UNION ALL
SELECT PARSE_JSON('[ 1, 2, 3]');
SELECT ARRAY_UNION_AGG(a) FROM union_test;
+-------------------------+
| ARRAY_UNION_AGG(A) |
+-------------------------+
| [ 1, 1, 2, 3] |
+-------------------------+
이 연산은 멀티셋 의미론을 사용해요. 값 1은 입력 배열 중 하나에서 두 번 나타나므로 출력에도 두 번 나타나요.