PERCENTILE_ fungsi CONT jendela - AWS Clean Rooms

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

PERCENTILE_ fungsi CONT jendela

PERCENTILE_ CONT adalah fungsi distribusi terbalik yang mengasumsikan model distribusi berkelanjutan. Dibutuhkan nilai persentil dan spesifikasi sortir, dan mengembalikan nilai interpolasi yang akan jatuh ke dalam nilai persentil yang diberikan sehubungan dengan spesifikasi sortir.

PERCENTILE_ CONT menghitung interpolasi linier antara nilai setelah mengurutkannya. Menggunakan nilai persentil (P) dan jumlah baris bukan nol (N) dalam grup agregasi, fungsi menghitung nomor baris setelah mengurutkan baris sesuai dengan spesifikasi pengurutan. Nomor baris ini (RN) dihitung sesuai dengan RN = (1+ (P*(N-1)) rumus. Hasil akhir dari fungsi agregat dihitung dengan interpolasi linier antara nilai-nilai dari baris pada nomor baris dan. CRN = CEILING(RN) FRN = FLOOR(RN)

Hasil akhirnya adalah sebagai berikut.

Jika (CRN = FRN = RN) maka hasilnya adalah (value of expression from row at RN)

Jika tidak, hasilnya adalah sebagai berikut:

(CRN - RN) * (value of expression for row at FRN) + (RN - FRN) * (value of expression for row at CRN).

Anda hanya dapat menentukan PARTITION klausa dalam klausa. OVER Jika PARTITION ditentukan, untuk setiap baris, PERCENTILE _ CONT mengembalikan nilai yang akan jatuh ke dalam persentil yang ditentukan di antara satu set nilai dalam partisi yang diberikan.

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

Sintaks

PERCENTILE_CONT ( percentile ) WITHIN GROUP (ORDER BY expr) OVER ( [ PARTITION BY expr_list ] )

Argumen

persentil

Konstanta numerik antara 0 dan 1. Null diabaikan dalam perhitungan.

WITHINGROUP(ORDERDENGAN expr)

Menentukan nilai numerik atau tanggal/waktu untuk mengurutkan dan menghitung persentil atas.

OVER

Menentukan partisi jendela. OVERKlausul tidak dapat berisi urutan jendela atau spesifikasi bingkai jendela.

PARTITIONOLEH expr

Argumen opsional yang menetapkan rentang catatan untuk setiap grup dalam OVER klausa.

Pengembalian

Tipe pengembalian ditentukan oleh tipe data ekspresi ORDER BY dalam WITHIN GROUP klausa. Tabel berikut menunjukkan tipe kembali untuk setiap tipe data ekspresi ORDER BY.

Tipe input Tipe Pengembalian
SMALLINTINTEGERBIGINTNUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOUBLE
DATE DATE
TIMESTAMP TIMESTAMP

Catatan penggunaan

Jika ekspresi ORDER BY adalah tipe DECIMAL data yang ditentukan dengan presisi maksimum 38 digit, ada kemungkinan PERCENTILE _ CONT akan mengembalikan hasil yang tidak akurat atau kesalahan. Jika nilai pengembalian CONT fungsi PERCENTILE _ melebihi 38 digit, hasilnya dipotong agar sesuai, yang menyebabkan hilangnya presisi. Jika, selama interpolasi, hasil antara melebihi presisi maksimum, luapan numerik terjadi dan fungsi mengembalikan kesalahan. Untuk menghindari kondisi ini, sebaiknya gunakan tipe data dengan presisi lebih rendah atau mentransmisikan ekspresi ORDER BY ke presisi yang lebih rendah.

Misalnya, SUM fungsi dengan DECIMAL argumen mengembalikan presisi default 38 digit. Skala hasilnya sama dengan skala argumen. Jadi, misalnya, kolom DECIMAL (5,2) mengembalikan tipe data DECIMAL (38,2). SUM

Contoh berikut menggunakan SUM fungsi dalam klausa ORDER BY dari CONT fungsi PERCENTILE _. Tipe data PRICEPAID kolom adalah DECIMAL (8,2), sehingga SUM fungsi kembali DECIMAL (38,2).

select salesid, sum(pricepaid), percentile_cont(0.6) within group (order by sum(pricepaid) desc) over() from sales where salesid < 10 group by salesid;

Untuk menghindari potensi kehilangan presisi atau kesalahan luapan, lemparkan hasilnya ke tipe DECIMAL data dengan presisi lebih rendah, seperti yang ditunjukkan contoh berikut.

select salesid, sum(pricepaid), percentile_cont(0.6) within group (order by sum(pricepaid)::decimal(30,2) desc) over() from sales where salesid < 10 group by salesid;

Contoh

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

select sellerid, qty, percentile_cont(0.5) within group (order by qty) over() as median from winsales; sellerid | qty | median ----------+-----+-------- 1 | 10 | 20.0 1 | 10 | 20.0 3 | 10 | 20.0 4 | 10 | 20.0 3 | 15 | 20.0 2 | 20 | 20.0 3 | 20 | 20.0 2 | 20 | 20.0 3 | 30 | 20.0 1 | 30 | 20.0 4 | 40 | 20.0 (11 rows)
select sellerid, qty, percentile_cont(0.5) within group (order by qty) over(partition by sellerid) as median from winsales; sellerid | qty | median ----------+-----+-------- 2 | 20 | 20.0 2 | 20 | 20.0 4 | 10 | 25.0 4 | 40 | 25.0 1 | 10 | 10.0 1 | 10 | 10.0 1 | 30 | 10.0 3 | 10 | 17.5 3 | 15 | 17.5 3 | 20 | 17.5 3 | 30 | 17.5 (11 rows)

Contoh berikut menghitung PERCENTILE _ CONT dan PERCENTILE _ DISC penjualan tiket untuk penjual di negara bagian Washington.

SELECT sellerid, state, sum(qtysold*pricepaid) sales, percentile_cont(0.6) within group (order by sum(qtysold*pricepaid::decimal(14,2) ) desc) over(), percentile_disc(0.6) within group (order by sum(qtysold*pricepaid::decimal(14,2) ) desc) over() from sales s, users u where s.sellerid = u.userid and state = 'WA' and sellerid < 1000 group by sellerid, state; sellerid | state | sales | percentile_cont | percentile_disc ----------+-------+---------+-----------------+----------------- 127 | WA | 6076.00 | 2044.20 | 1531.00 787 | WA | 6035.00 | 2044.20 | 1531.00 381 | WA | 5881.00 | 2044.20 | 1531.00 777 | WA | 2814.00 | 2044.20 | 1531.00 33 | WA | 1531.00 | 2044.20 | 1531.00 800 | WA | 1476.00 | 2044.20 | 1531.00 1 | WA | 1177.00 | 2044.20 | 1531.00 (7 rows)