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 LISTAGG agregat mengurutkan baris untuk grup tersebut sesuai ORDER dengan ekspresi BY, lalu menggabungkan nilai menjadi satu string.
LISTAGGadalah 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. LISTAGGmenggunakan nilai pertama yang ditemui. Untuk informasi selengkapnya, lihat Signifikansi trailing blank. - aggregate_expression
-
Ekspresi yang valid (seperti nama kolom) yang memberikan nilai untuk digabungkan. NULLnilai 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:
", "
": "
" "
- WITHINGROUP(ORDEROLEH order_list)
-
(Opsional) Sebuah klausa yang menentukan urutan dari nilai agregat.
Pengembalian
VARCHAR(MAX). Jika hasil set lebih besar dari VARCHAR ukuran maksimum (64K-1, atau 65535), kemudian LISTAGG mengembalikan kesalahan berikut:
Invalid operation: Result size exceeds LISTAGG limit
Catatan penggunaan
Jika pernyataan menyertakan beberapa LISTAGG fungsi yang menggunakan WITHIN GROUP klausa, setiap WITHIN GROUP klausa harus menggunakan nilai BY yang samaORDER.
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 berikut agregat penjualIDs, dipesan oleh 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 digunakan DISTINCT untuk mengembalikan daftar penjual unikIDs.
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 agregat penjual IDs 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 penjualan yang dipisahkan koma IDs 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