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, NUMERIK INT8, 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.