Window

CUME_DIST

PostgreSQLPostgreSQL

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 precision

Syntax

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
1SELECT
2 name,
3 score,
4 CUME_DIST() OVER (ORDER BY score) AS cume_dist
5FROM students;

Persentase siswa dengan skor <= skor ini.

Hasil
namescorecume_dist
Andi600.2
Budi700.4
Citra800.6
Dewi800.6
... 1 baris lainnya

Analisis Distribusi Harga

SQL
1SELECT
2 price_range,
3 COUNT(*) as products,
4 MAX(cume_dist) as cumulative_pct
5FROM (
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
17GROUP BY price_range;

Analisis distribusi produk per range harga.

Filter Bottom 20%

SQL
1SELECT *
2FROM (
3 SELECT
4 employee_id,
5 performance_score,
6 CUME_DIST() OVER (ORDER BY performance_score) AS cume_dist
7 FROM employees
8) ranked
9WHERE cume_dist <= 0.2;

Mencari karyawan di bottom 20% performance.