Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к: 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
и двоичный формат нулевой длины (''::BINARY
) дляBINARY
.ORDER BY
Выражение, используемое для упорядочивания значений перед объединением. Значение по умолчанию — это порядок строк в группе.
sortKey
Выражение, для которого определен порядок. Ссылки на столбцы в
sortKey
также должны присутствовать вexpr
.sort_direction
Указывает порядок сортировки для выражения ORDER BY.
-
ASC
: направление сортировки для этого выражения восходящее. -
DESC
: направление сортировки "по убыванию" для этого выражения.
Если направление сортировки не указано явно, по умолчанию строки сортируются по возрастанию.
-
порядок сортировки нулевых значений
При необходимости указывает, возвращаются ли значения NULL до или после значений, отличных от NULL. Если параметр
null_sort_order
не указан, то значения NULL сортируются в начале, когда порядок сортировки имеет значениеASC
, или в конце, когда для порядка сортировки задано значениеDESC
.-
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