Condividi tramite


listagg funzione di aggregazione

Si applica a:check contrassegnato come sì controllo SQL di Databricks contrassegnato come sì 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 o BINARY. 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 ('') per STRING e un file binario di lunghezza zero (''::BINARY) per BINARY.

  • 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 in expr.

    • 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 facoltativa BOOLEAN 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 sortKeyexpr.

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