View a markdown version of this page

Fungsi jendela MEDIAN - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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.

Sintaksis

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

Argumen

median_ekspresi

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

DI ATAS

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

PARTISI DENGAN 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 pengembalian 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 ditentukan 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 dipotong agar pas, yang menyebabkan hilangnya presisi. Jika, selama interpolasi, hasil perantara melebihi presisi maksimum, terjadi luapan numerik dan fungsi mengembalikan kesalahan. Untuk menghindari kondisi ini, sebaiknya gunakan tipe data dengan presisi yang lebih rendah atau melemparkan 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 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, berikan hasilnya ke tipe data DECIMAL dengan presisi yang 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, lihatTabel sampel untuk contoh fungsi jendela.