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

Untuk setiap grup dalam kueri, fungsi agregat LISTAGG mengurutkan 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] aggregate_expression [, 'delimiter' ] ) [ WITHIN GROUP (ORDER BY order_list) ]

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.

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

Catatan penggunaan

Jika pernyataan menyertakan beberapa fungsi LISTAGG yang menggunakan klausa WITHERE GROUP, setiap klausa WITHIN GROUP harus menggunakan nilai ORDER BY yang sama.

Misalnya, pernyataan berikut akan mengembalikan kesalahan.

select listagg(sellerid) within group (order by dateid) as sellers, listagg(dateid) within group (order by sellerid) as dates from winsales;

Pernyataan berikut akan berjalan dengan sukses.

select listagg(sellerid) within group (order by dateid) as sellers, listagg(dateid) within group (order by dateid) as dates from winsales; select listagg(sellerid) within group (order by dateid) as sellers, listagg(dateid) as dates from winsales;

Contoh-contoh

Contoh berikut menggabungkan ID penjual, diurutkan berdasarkan ID penjual.

select listagg(sellerid, ', ') within group (order by sellerid) from sales where eventid = 4337; listagg ---------------------------------------------------------------------------------------------------------------------------------------- 380, 380, 1178, 1178, 1178, 2731, 8117, 12905, 32043, 32043, 32043, 32432, 32432, 38669, 38750, 41498, 45676, 46324, 47188, 47188, 48294

Contoh berikut menggunakan DISTINCT untuk mengembalikan daftar ID penjual unik.

select listagg(distinct sellerid, ', ') within group (order by sellerid) from sales where eventid = 4337; listagg ------------------------------------------------------------------------------------------- 380, 1178, 2731, 8117, 12905, 32043, 32432, 38669, 38750, 41498, 45676, 46324, 47188, 48294

Contoh berikut menggabungkan ID penjual dalam urutan tanggal.

select listagg(sellerid) within group (order by dateid) from winsales; listagg ------------- 31141242333

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

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

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

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