Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: controllo SQL di Databricks
Databricks Runtime 16.4 e versioni successive
Restituisce i valori concatenati STRING
e BINARY
all'interno di un gruppo.
Questa funzione è un alias per la funzione string_agg.
Sintassi
listagg ( [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 ]
Questa funzione può anche essere richiamata come funzione finestra utilizzando la clausola OVER
, se si omettono la clausola WITHIN GROUP
e la clausola FILTER
.
Argomenti
expr
Espressione che restituisce un oggetto
STRING
oBINARY
.NULL
i valori vengono ignorati.delimiter
Espressione costante che corrisponde al tipo di
expr
utilizzato per separare i valori concatenati. Il valore predefinito è una stringa vuota (''
) perSTRING
e un file binario di lunghezza zero (''::BINARY
) perBINARY
.ORDER BY
Espressione utilizzata per ordinare i valori prima della concatenazione. Il valore predefinito è l'ordine delle righe nel gruppo.
sortKey
Espressione in base alla quale viene definito l'ordine. I riferimenti alle colonne all'interno
sortKey
devono essere presenti anche inexpr
.sort_direction
Specifica l'ordinamento per l'ordine in base all'espressione.
-
ASC
: la direzione di ordinamento per questa espressione è crescente. -
DESC
: l'ordinamento per questa espressione è decrescente.
Se la direzione di ordinamento non viene specificata in modo esplicito, per impostazione predefinita le righe vengono ordinate in ordine crescente.
-
ordine_di_classificazione_dei_null
Specifica facoltativamente se i valori NULL vengono restituiti prima o dopo valori non NULL. Se
null_sort_order
non viene specificato, gli NUL ordinano prima se l'ordinamento èASC
e NULLS ordinano per ultimo se l'ordinamento èDESC
.-
NULLS FIRST
:NULL
i valori vengono restituiti per primi indipendentemente dall'ordinamento. -
NULLS LAST
:NULL
i valori vengono restituiti per ultimo indipendentemente dall'ordinamento.
-
cond
: espressione facoltativaBOOLEAN
che filtra le righe usate per l'aggregazione.
Restituzioni
Se STRING
è un oggetto expr
, STRING
in caso BINARY
contrario.
Se DISTINCT
viene specificato solo i valori univoci vengono aggregati e deve corrispondere a sortKey
expr
.
Esempi
-- Simple example with default delimiter
> SELECT listagg(col) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
acb
-- Simple example with explicit delimiter
> SELECT listagg(col, ', ') FROM VALUES ('a'), ('b'), ('c') AS tab(col);
b, a, c
-- Example with nulls
> SELECT listagg(col) FROM VALUES ('a'), (NULL), ('c') AS tab(col);
ac
-- Example with explicit order
> SELECT listagg(col) WITHIN GROUP (ORDER BY col DESC)
FROM VALUES ('a'), ('b'), ('c') AS tab(col);
cba
-- Example with DISTINCT
> SELECT listagg(DISTINCT col)
FROM VALUES ('a'), ('a'), ('b') AS tab(col);
ab
-- Example of FUNCTION_AND_ORDER_EXPRESSION_MISMATCH
> SELECT listagg(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(listagg(col::binary, x'00'))
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
6100630062