Freigeben über


listagg Aggregatfunktion

Gilt für:Ja, mit Häkchen markiert Databricks SQL Ja, mit Häkchen markiert Databricks Runtime 16.4 und höher

Gibt verkettete STRING- und BINARY-Werte innerhalb einer Gruppe zurück.

Diese Funktion ist ein Alias für die string_agg-Funktion.

Syntax

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 ]

Diese Funktion kann auch mithilfe der Klausel als OVER aufgerufen werden, wenn die WITHIN GROUP Klausel und FILTER Klausel weggelassen werden.

Argumente

  • expr

    Ein Ausdruck, der mit STRING oder BINARY ausgewertet wird NULL Werte werden ignoriert.

  • delimiter

    Ein konstanter Ausdruck, der dem Typ von expr entspricht und benutzt wird, um die verketteten Werte zu trennen. Die Standardeinstellung ist eine leere Zeichenfolge ('') für STRING und eine Leere Binärdatei (''::BINARY) für BINARY.

  • ORDER BY

    Ein Ausdruck, der zum Sortieren der Werte vor der Verkettung verwendet wird Der Standardwert ist die Reihenfolge der Zeilen in der Gruppe.

    • sortKey

      Ein Ausdruck, in dem die Reihenfolge definiert ist. Die Spaltenverweise innerhalb von sortKey müssen auch in expr vorhanden sein.

    • sort_direction

      Gibt die Sortierreihenfolge für die Sortierung nach Ausdruck an

      • ASC: Die Sortierrichtung für diesen Ausdruck ist „aufsteigend“.
      • DESC: Die Sortierrichtung für diesen Ausdruck ist „absteigend“.

      Wird die Sortierrichtung nicht explizit angegeben, werden Zeilen standardmäßig aufsteigend sortiert.

    • Reihenfolge der Nullwerte

      Gibt optional an, ob NULL-Werte vor/nach Nicht-NULL-Werten zurückgegeben werden. Wird null_sort_order nicht angegeben, werden NULL-Werte bei der Sortierreihenfolge ASC zuerst und bei der Sortierreihenfolge DESC zuletzt aufgeführt.

      • NULLS FIRST: NULL Werte werden unabhängig von der Sortierreihenfolge zuerst zurückgegeben.
      • NULLS LAST: NULL Werte werden unabhängig von der Sortierreihenfolge zuletzt zurückgegeben.
  • cond: Ein optionaler BOOLEAN Ausdruck, der die zeilen filtert, die für die Aggregation verwendet werden.

Rückkehr

STRING, wenn expr vom Typ STRING ist, andernfalls BINARY.

Wenn DISTINCT angegeben wird, werden nur eindeutige Werte aggregiert und sortKey muss mit expr übereinstimmen.

Beispiele

-- 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