Bagikan melalui


string_aggFungsi agregasi

Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime 16.4 dan yang lebih baru

Mengembalikan nilai yang digabungkan STRING dan BINARY dalam grup.

Fungsi ini adalah alias untuk fungsi listagg.

Sintaksis

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 ]

Fungsi ini juga dapat dipanggil sebagai fungsi jendela menggunakan OVER klausa jika WITHIN GROUP klausa dan FILTER klausa dihilangkan.

Argumen

  • expr

    Ekspresi yang menghasilkan STRING atau BINARY. NULL nilai diabaikan.

  • delimiter

    Ekspresi konstanta yang cocok dengan jenis dari expr yang digunakan untuk memisahkan nilai-nilai yang digabungkan. Defaultnya adalah string kosong ('') untuk STRING dan biner panjang nol (''::BINARY) untuk BINARY.

  • ORDER BY

    Ekspresi yang digunakan untuk menyusun nilai sebelum penggabungan. Defaultnya adalah urutan baris dalam grup.

    • sortKey

      Ekspresi di mana urutan ditentukan. Referensi kolom di dalam sortKey juga harus ada di expr.

    • sort_direction

      Menentukan urutan sortir untuk urutan yang didasarkan pada ekspresi.

      • ASC: Arah pengurutan untuk ekspresi ini adalah menaik.
      • DESC: Urutan penyortiran untuk ekspresi ini adalah menurun.

      Jika arah pengurutan tidak ditentukan secara eksplisit, maka baris akan diurutkan naik secara default.

    • nulls_sort_order

      Secara opsional menentukan apakah nilai NULL dikembalikan sebelum/setelah nilai non-NULL. Jika null_sort_order tidak ditentukan, NULL akan diurutkan terlebih dahulu jika urutan sortirnya adalah ASC dan NULLS akan diurutkan terakhir jika urutan sortirnya adalah DESC.

      • NULLS FIRST: NULL nilai dikembalikan terlebih dahulu terlepas dari urutan pengurutan.
      • NULLS LAST: NULL nilai dikembalikan terakhir terlepas dari urutan pengurutan.
  • cond: Ekspresi opsional BOOLEAN yang memfilter baris yang digunakan untuk agregasi.

Pengembalian Barang

STRING jika expr adalah STRING, jika tidak BINARY.

Jika DISTINCT ditentukan, hanya nilai unik yang dikumpulkan dan sortKey harus sesuai dengan expr.

Contoh

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