Fungsi jendela MEDIAN - Amazon Redshift

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

Fungsi jendela MEDIAN

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

MEDIAN adalah 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.

DI ATAS

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

PARTISI OLEH partition_expression

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

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, NUMERIK, DESIMAL DECIMAL
MENGAPUNG, GANDA DOUBLE
DATE DATE

Catatan penggunaan

Jika argumen median_expression adalah tipe data DECIMAL yang didefinisikan dengan presisi maksimum 38 digit, ada kemungkinan MEDIAN akan mengembalikan hasil yang tidak akurat atau kesalahan. Jika nilai pengembalian fungsi MEDIAN melebihi 38 digit, hasilnya terpotong 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, fungsi SUM dengan argumen DECIMAL mengembalikan presisi default 38 digit. Skala hasilnya sama dengan skala argumen. Jadi, misalnya, SUM kolom DECIMAL (5,2) mengembalikan tipe data DECIMAL (38,2).

Contoh berikut menggunakan fungsi SUM dalam argumen median_expression dari fungsi MEDIAN. Tipe data dari kolom PRICEPAID adalah DECIMAL (8,2), sehingga fungsi SUM mengembalikan 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 data DECIMAL 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 tabel WINSALES, lihatContoh tabel untuk contoh fungsi jendela.