Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime 16.4 a novější
Vrátí zřetězené hodnoty STRING a BINARY ve skupině.
Tato funkce je aliasem pro funkci listagg.
Syntaxe
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 ]
Tuto funkci lze také vyvolat jako funkci okna pomocí OVER klauzule, pokud WITHIN GROUP je klauzule a FILTER klauzule vynechána.
Argumenty
exprVýraz, který se vyhodnotí jako
STRINGneboBINARY.NULLhodnoty jsou ignorovány.delimiterKonstantní výraz odpovídající typu použitého k oddělení zřetězených
exprhodnot. Výchozí hodnota je prázdný řetězec ('') proSTRINGbinární hodnotu nulové délky (''::BINARY) proBINARY.ORDER BYVýraz použitý k seřazení hodnot před zřetězením. Výchozí hodnota je pořadí řádků ve skupině.
sortKeyVýraz, na kterém je definováno pořadí. Odkazy na
sortKeysloupce musí být rovněž obsaženy vexpr.sort_direction
Určuje pořadí řazení pro pořadí podle výrazu.
-
ASC: Směr řazení pro tento výraz je vzestupný. -
DESC: Pořadí řazení pro tento výraz je sestupné.
Pokud není explicitně zadán směr řazení, jsou ve výchozím nastavení řádky seřazeny vzestupně.
-
pořadí řazení nul
Volitelně určuje, jestli se hodnoty NULL vrátí před nebo za hodnotami, které nejsou null. Pokud není uvedeno
null_sort_order, hodnoty NULL se seřadí jako první, pokud je pořadí řazeníASC, a jako poslední, pokud je pořadí řazeníDESC.-
NULLS FIRST:NULLHodnoty se vrátí jako první bez ohledu na pořadí řazení. -
NULLS LAST:NULLHodnoty se vrátí jako poslední bez ohledu na pořadí řazení.
-
cond: VolitelnýBOOLEANvýraz filtrující řádky použité pro agregaci.
Návraty
A STRING pokud expr je STRING, BINARY jinak.
Pokud DISTINCT je zadán, jsou agregovány pouze jedinečné hodnoty a sortKey se musí shodovat s expr.
Příklady
-- 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