Udostępnij za pośrednictwem


listagg funkcja agregacji

Dotyczy:zaznaczone jako tak Databricks SQL zaznaczone jako tak Databricks Runtime 16.4 lub nowsze

Zwraca połączone wartości STRING i BINARY w obrębie grupy.

Ta funkcja jest aliasem funkcji string_agg.

Składnia

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 ]

Tę funkcję można również wywołać jako funkcję okna przy użyciu OVER klauzuli , jeśli klauzula WITHIN GROUP i FILTER klauzula zostaną pominięte.

Argumenty (w programowaniu)

  • expr

    Wyrażenie, które ocenia się na STRING lub BINARY. NULL wartości są ignorowane.

  • delimiter

    Wyrażenie stałe zgodne z typem separatora expr, używanego do oddzielania połączonych wartości. Wartość domyślna jest pustym ciągiem znaków ('') dla STRING oraz zerowej długości wartością binarną (''::BINARY) dla BINARY.

  • ORDER BY

    Wyrażenie używane do porządkowania wartości przed łączeniem. Wartość domyślna to kolejność wierszy w grupie.

    • sortKey

      Wyrażenie, w którym zdefiniowano kolejność. Odwołania do kolumn w sortKey muszą również występować w expr.

    • sort_direction

      Określa kolejność sortowania dla kolejności według wyrażenia.

      • ASC: kierunek sortowania dla tego wyrażenia jest rosnąco.
      • DESC: Kolejność sortowania dla tego wyrażenia jest malejąco.

      Jeśli kierunek sortowania nie jest jawnie określony, domyślnie wiersze są sortowane rosnąco.

    • nulls_sort_order

      Opcjonalnie określa, czy wartości NULL są zwracane przed/po wartościach innych niż NULL. Jeśli null_sort_order nie określono parametru , najpierw posortuj listy NULLs, jeśli kolejność sortowania to ASC , a sortowanie nulls ostatnie, jeśli kolejność sortowania to DESC.

      • NULLS FIRST: NULL wartości są zwracane najpierw niezależnie od kolejności sortowania.
      • NULLS LAST: NULL wartości zwracane są na końcu, niezależnie od kolejności sortowania.
  • cond: opcjonalne BOOLEAN wyrażenie filtrujące wiersze używane do agregacji.

Zwraca

A STRING jeśli expr jest elementem STRING, BINARY w przeciwnym razie.

Jeśli określono DISTINCT, agregowane są tylko unikatowe wartości, a sortKey musi być zgodny z parametrem expr.

Przykłady

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