Aracılığıyla paylaş


string_agg toplama işlevi

Şunun için geçerlidir: evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 16.4 ve üzeri

Bir grup içindeki birleştirilmiş STRING ve BINARY değerleri döndürür.

Bu işlev listagg işlevinin diğer adıdır.

Sözdizimi

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 ]

Bu işlev, tümcesi ve OVER tümcesi atlanırsa, WITHIN GROUP yan tümcesi kullanılarak FILTER olarak da çağrılabilir.

Tartışmalar

  • expr

    STRING veya BINARY olarak değerlendirilen bir ifade. NULL değerleri yoksayılır.

  • delimiter

    expr türüyle eşleşen, birleştirilmiş değerleri ayırmak için kullanılan sabit ifade. Varsayılan değer '' için boş bir dizedir (STRING) ve ''::BINARY için sıfır uzunluklu ikilidir (BINARY).

  • ORDER BY

    Birleştirmeden önce değerleri sıralamak için kullanılan ifade. Varsayılan, gruptaki satırların sırasıdır.

    • sortKey

      Sıranın tanımlandığı ifade. içinde sortKey bulunan sütun başvuruları da expr içinde bulunmalıdır.

    • sort_direction

      İfadeye göre sıralama düzenini belirtir.

      • ASC: Bu ifadenin sıralama yönü artandır.
      • DESC: Bu ifadenin sıralama düzeni azalan düzendedir.

      Sıralama yönü açıkça belirtilmezse, varsayılan olarak satırlar artan düzende sıralanır.

    • boş_değerler_sıralama_düzeni

      İsteğe bağlı olarak NULL değerlerin NULL olmayan değerlerden önce/sonra döndürülip döndürülmeyeceğini belirtir. Belirtilmezse null_sort_order , sıralama düzeni ise NULL'ler önce sıralanır ve sıralama düzeni ASC ise NULLS en son sıralanır DESC.

      • NULLS FIRST: NULL değerler sıralama düzeninden bağımsız olarak önce döndürülür.
      • NULLS LAST: NULL değerler sıralama düzeninden bağımsız olarak en son döndürülür.
  • cond: Toplama için kullanılan satırları filtreleyerek isteğe bağlı BOOLEAN bir ifade.

İade

Eğer STRING, expr ise, STRING; aksi halde, BINARY.

Eğer DISTINCT belirtilirse, yalnızca benzersiz değerler toplanır ve sortKeyexpr ile eşleşmelidir.

Örnekler

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