Dela via


string_agg aggregatfunktion

Gäller för:avprickad ja Databricks SQL avprickad ja Databricks Runtime 16.4 och senare

Returnerar sammanfogade STRING värden och BINARY värden i en grupp.

Den här funktionen är ett alias för funktionen listagg.

Syntax

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 ]

Den här funktionen kan också anropas som en fönsterfunktion med hjälp av OVER -satsen om WITHIN GROUP satsen och FILTER satsen utelämnas.

Argumentpunkter

  • expr

    Ett uttryck som utvärderas till en STRING eller BINARY. NULL värden ignoreras.

  • delimiter

    Ett konstant uttryck som matchar den typ av expr som används för att separera de sammanfogade värdena. Standardvärdet är en tom sträng ('') för STRING och en binär fil med noll längd (''::BINARY) för BINARY.

  • ORDER BY

    Ett uttryck som används för att sortera värdena före sammanfogning. Standardvärdet är ordningen på raderna i gruppen.

    • sortKey

      Ett uttryck som ordning definieras på. Kolumnreferenserna inom sortKey måste också finnas i expr.

    • sort_direction

      Anger sorteringsordningen för order efter uttryck.

      • ASC: Sorteringsriktningen för det här uttrycket är stigande.
      • DESC: Sorteringsordningen för det här uttrycket är fallande.

      Om sorteringsriktningen inte uttryckligen anges sorteras raderna som standard stigande.

    • sorteringsordning för nullvärden

      Du kan också ange om NULL-värden returneras före/efter icke-NULL-värden. Om null_sort_order inte har angetts sorteras NULL:er först om sorteringsordningen är ASC och NULLS-sortering senast om sorteringsordningen är DESC.

      • NULLS FIRST: NULL värdena returneras först oavsett sorteringsordning.
      • NULLS LAST: NULL värdena returneras sist oavsett sorteringsordning.
  • cond: Ett valfritt BOOLEAN uttryck som filtrerar de rader som används för aggregering.

Retur

Ett STRING om expr är ett STRING, BINARY annars.

Om DISTINCT anges aggregeras endast unika värden och sortKey måste matcha expr.

Exempel

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