Window
PostgreSQL
CUME_DIST
Menghitung cumulative distribution (0 < x <= 1). Formula: jumlah baris dengan nilai <= baris ini / total baris. Berbeda dengan PERCENT_RANK, CUME_DIST tidak pernah 0.
Tipe hasil:
double precisionSyntax
SQL
CUME_DIST() OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression
)Parameter
ORDER BYexpressionwajib
Menentukan urutan distribusi
PARTITION BYexpressionopsional
Membagi data menjadi grup terpisah
Contoh Penggunaan
Cumulative Distribution
SQL
1 SELECT 2 name, 3 score, 4 CUME_DIST() OVER (ORDER BY score) AS cume_dist 5 FROM students;
Persentase siswa dengan skor <= skor ini.
Hasil
| name | score | cume_dist |
|---|---|---|
| Andi | 60 | 0.2 |
| Budi | 70 | 0.4 |
| Citra | 80 | 0.6 |
| Dewi | 80 | 0.6 |
| ... 1 baris lainnya | ||
Analisis Distribusi Harga
SQL
1 SELECT 2 price_range, 3 COUNT(*) as products, 4 MAX(cume_dist) as cumulative_pct 5 FROM ( 6 SELECT 7 product_name, 8 price, 9 CASE 10 WHEN price < 100000 THEN < 100K 11 WHEN price < 500000 THEN 100K-500K 12 ELSE > 500K 13 END AS price_range, 14 CUME_DIST() OVER (ORDER BY price) AS cume_dist 15 FROM products 16 ) t 17 GROUP BY price_range;
Analisis distribusi produk per range harga.
Filter Bottom 20%
SQL
1 SELECT * 2 FROM ( 3 SELECT 4 employee_id, 5 performance_score, 6 CUME_DIST() OVER (ORDER BY performance_score) AS cume_dist 7 FROM employees 8 ) ranked 9 WHERE cume_dist <= 0.2;
Mencari karyawan di bottom 20% performance.