Fungsi jendela LISTAGG - AWS Clean Rooms

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi jendela LISTAGG

Untuk setiap grup dalam kueri, fungsi jendela LISTAGG memerintahkan baris untuk grup tersebut sesuai dengan ekspresi ORDER BY, lalu menggabungkan nilai menjadi satu string.

LISTAGG adalah fungsi compute-node saja. Fungsi mengembalikan kesalahan jika kueri tidak mereferensikan tabel atau tabel AWS Clean Rooms sistem yang ditentukan pengguna.

Sintaks

LISTAGG( [DISTINCT] expression [, 'delimiter' ] ) [ WITHIN GROUP (ORDER BY order_list) ] OVER ( [PARTITION BY partition_expression] )

Argumen

DISTINCT

(Opsional) Klausa yang menghilangkan nilai duplikat dari ekspresi yang ditentukan sebelum digabungkan. Spasi trailing diabaikan, sehingga string 'a' dan 'a ' diperlakukan sebagai duplikat. LISTAGG menggunakan nilai pertama yang ditemui. Untuk informasi selengkapnya, lihat Signifikansi trailing blanko.

aggregate_expression

Ekspresi yang valid (seperti nama kolom) yang memberikan nilai untuk digabungkan. Nilai NULL dan string kosong diabaikan.

pembatas

(Opsional) Konstanta string untuk memisahkan nilai gabungan. Default-nya adalah NULL.

AWS Clean Rooms mendukung sejumlah spasi utama atau belakang di sekitar koma opsional atau titik dua serta string kosong atau sejumlah spasi.

Contoh nilai yang valid adalah:

", "

": "

" "

DALAM GRUP (PESANAN BERDASARKAN order_list)

(Opsional) Sebuah klausa yang menentukan urutan dari nilai agregat. Deterministik hanya jika ORDER BY menyediakan urutan unik. Defaultnya adalah menggabungkan semua baris dan mengembalikan satu nilai.

DI ATAS

Sebuah klausa yang menentukan partisi jendela. Klausa OVER tidak dapat berisi urutan jendela atau spesifikasi bingkai jendela.

PARTISI OLEH partition_expression

(Opsional) Menetapkan rentang catatan untuk setiap grup dalam klausa OVER.

Pengembalian

VARCHAR (MAKS). Jika set hasil lebih besar dari ukuran VARCHAR maksimum (64K-1, atau 65535), maka LISTAGG mengembalikan kesalahan berikut:

Invalid operation: Result size exceeds LISTAGG limit

Contoh-contoh

Contoh berikut menggunakan tabel WINSALES. Untuk deskripsi tabel WINSALES, lihatContoh tabel untuk contoh fungsi jendela.

Contoh berikut mengembalikan daftar ID penjual, diurutkan oleh ID penjual.

select listagg(sellerid) within group (order by sellerid) over() from winsales; listagg ------------ 11122333344 ... ... 11122333344 11122333344 (11 rows)

Contoh berikut mengembalikan daftar ID penjual untuk pembeli B, dipesan berdasarkan tanggal.

select listagg(sellerid) within group (order by dateid) over () as seller from winsales where buyerid = 'b' ; seller --------- 3233 3233 3233 3233 (4 rows)

Contoh berikut mengembalikan daftar tanggal penjualan yang dipisahkan koma untuk pembeli B.

select listagg(dateid,',') within group (order by sellerid desc,salesid asc) over () as dates from winsales where buyerid = 'b'; dates ------------------------------------------- 2003-08-02,2004-04-18,2004-04-18,2004-02-12 2003-08-02,2004-04-18,2004-04-18,2004-02-12 2003-08-02,2004-04-18,2004-04-18,2004-02-12 2003-08-02,2004-04-18,2004-04-18,2004-02-12 (4 rows)

Contoh berikut menggunakan DISTINCT untuk mengembalikan daftar tanggal penjualan unik untuk pembeli B.

select listagg(distinct dateid,',') within group (order by sellerid desc,salesid asc) over () as dates from winsales where buyerid = 'b'; dates -------------------------------- 2003-08-02,2004-04-18,2004-02-12 2003-08-02,2004-04-18,2004-02-12 2003-08-02,2004-04-18,2004-02-12 2003-08-02,2004-04-18,2004-02-12 (4 rows)

Contoh berikut mengembalikan daftar ID penjualan yang dipisahkan koma untuk setiap ID pembeli.

select buyerid, listagg(salesid,',') within group (order by salesid) over (partition by buyerid) as sales_id from winsales order by buyerid; buyerid | sales_id -----------+------------------------ a |10005,40001,40005 a |10005,40001,40005 a |10005,40001,40005 b |20001,30001,30004,30003 b |20001,30001,30004,30003 b |20001,30001,30004,30003 b |20001,30001,30004,30003 c |10001,20002,30007,10006 c |10001,20002,30007,10006 c |10001,20002,30007,10006 c |10001,20002,30007,10006 (11 rows)