MEDIANfungsi jendela - Amazon Redshift

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

MEDIANfungsi jendela

Menghitung nilai median untuk rentang nilai di jendela atau partisi. NULLnilai dalam rentang diabaikan.

MEDIANadalah fungsi distribusi terbalik yang mengasumsikan model distribusi kontinu.

Sintaks

MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )

Argumen

median_expression

Ekspresi, seperti nama kolom, yang memberikan nilai untuk menentukan median. Ekspresi harus memiliki tipe data numerik atau datetime atau secara implisit dapat dikonversi menjadi satu.

OVER

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

PARTITIONOLEH partition_expression

Tidak wajib. Ekspresi yang menetapkan rentang catatan untuk setiap grup dalam OVER klausa.

Jenis data

Jenis pengembalian ditentukan oleh tipe data median_expression. Tabel berikut menunjukkan tipe kembali untuk setiap tipe data median_expression.

Tipe input Tipe Pengembalian
INT2, INT4, INT8, NUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOUBLE
DATE DATE

Catatan penggunaan

Jika argumen median_expression adalah tipe DECIMAL data yang didefinisikan dengan presisi maksimum 38 digit, ada kemungkinan bahwa MEDIAN akan mengembalikan hasil yang tidak akurat atau kesalahan. Jika nilai kembali MEDIAN fungsi 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 argumen median_expression 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 argumen median_expression dari suatu fungsi. MEDIAN Tipe data PRICEPAID kolom adalah DECIMAL (8,2), sehingga SUM fungsi kembali DECIMAL (38,2).

select salesid, sum(pricepaid), median(sum(pricepaid)) 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), median(sum(pricepaid)::decimal(30,2)) over() from sales where salesid < 10 group by salesid;

Contoh

Contoh berikut menghitung jumlah penjualan rata-rata untuk setiap penjual:

select sellerid, qty, median(qty) over (partition by sellerid) from winsales order by sellerid; sellerid qty median --------------------------- 1 10 10.0 1 10 10.0 1 30 10.0 2 20 20.0 2 20 20.0 3 10 17.5 3 15 17.5 3 20 17.5 3 30 17.5 4 10 25.0 4 40 25.0

Untuk deskripsi WINSALES tabel, lihatContoh tabel untuk contoh fungsi jendela.