적용 대상: Databricks SQL
Databricks Runtime 16.4 이상
그룹 내의 연결된 STRING
값과 BINARY
값을 반환합니다.
이 함수는 listagg 함수의 별칭입니다.
문법
string_agg ( [ALL | DISTINCT] expr [, delimiter] )
[ WITHIN GROUP (ORDER BY { sortKey [ sort_direction ] [ nulls_sort_oder ] } [, ...] ) ]
[ FILTER ( WHERE cond ) ]
sort_direction
[ ASC | DESC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
절과 OVER
절을 생략하면 이 함수를 WITHIN GROUP
절이 포함된 FILTER
로 호출할 수도 있습니다.
주장들
expr
STRING
또는BINARY
로 평가되는 식입니다.NULL
값은 무시됩니다.delimiter
연결된 값을 구분하는 데 사용되는 형식
expr
과 일치하는 상수 식입니다. 기본값은 빈 문자열(''
)은STRING
에 대한 것이며, 길이가 0인 이진 데이터(''::BINARY
)는BINARY
에 대한 것입니다.ORDER BY
연결 전에 값을 정렬하는 데 사용되는 식입니다. 기본값은 그룹의 행 순서입니다.
sortKey
순서가 정의되는 식입니다. 내
sortKey
열 참조도 에 있어야expr
합니다.sort_direction
정렬 표현을 위한 순서를 지정합니다.
-
ASC
: 이 식의 정렬 방향이 오름차순입니다. -
DESC
: 이 식의 정렬 순서가 내림차순입니다.
정렬 방향이 명시적으로 지정되지 않으면 기본적으로 행이 오름차순으로 정렬됩니다.
-
null 값 정렬 순서
선택적으로 NULL이 아닌 값 앞/뒤에 NULL 값이 반환되는지 여부를 지정합니다.
null_sort_order
를 지정하지 않으면 정렬 순서가ASC
이면 NULL이 먼저 정렬되고 정렬 순서가DESC
이면 NULL이 마지막으로 정렬됩니다.-
NULLS FIRST
:NULL
정렬 순서에 관계없이 값이 먼저 반환됩니다. -
NULLS LAST
:NULL
정렬 순서에 관계없이 값이 마지막으로 반환됩니다.
-
cond
: 집계에 사용되는 행을 필터링하는 선택적BOOLEAN
식입니다.
반품
STRING
이(가) expr
이면 STRING
, 그렇지 않으면 BINARY
.
DISTINCT
가 지정된 경우, 고유 값만 집계되며 sortKey
은 expr
과 반드시 일치해야 합니다.
예시
-- Simple example with default delimiter
> SELECT string_agg(col) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
acb
-- Simple example with explicit delimiter
> SELECT string_agg(col, ', ') FROM VALUES ('a'), ('b'), ('c') AS tab(col);
b, a, c
-- Example with nulls
> SELECT string_agg(col) FROM VALUES ('a'), (NULL), ('c') AS tab(col);
ac
-- Example with explicit order
> SELECT string_agg(col) WITHIN GROUP (ORDER BY col DESC)
FROM VALUES ('a'), ('b'), ('c') AS tab(col);
cba
-- Example with DISTINCT
> SELECT string_agg(DISTINCT col)
FROM VALUES ('a'), ('a'), ('b') AS tab(col);
ab
-- Example of FUNCTION_AND_ORDER_EXPRESSION_MISMATCH
> SELECT string_agg(DISTINCT col) WITHIN GROUP (ORDER BY id DESC)
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
Error: [INVALID_WITHIN_GROUP_EXPRESSION.MISMATCH_WITH_DISTINCT_INPUT
-- Example with `BINARY`
> SELECT hex(string_agg(col::binary, x'00'))
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
6100630062