Window

PERCENT_RANK

PostgreSQLPostgreSQL

Menghitung relative rank sebagai persentase (0 sampai 1). Formula: (rank - 1) / (total_rows - 1). Baris pertama selalu 0, baris terakhir selalu 1.

Tipe hasil: double precision

Syntax

SQL
PERCENT_RANK() OVER (
  [PARTITION BY partition_expression]
  ORDER BY sort_expression
)

Parameter

ORDER BYexpressionwajib

Menentukan urutan ranking

PARTITION BYexpressionopsional

Membagi data menjadi grup terpisah

Contoh Penggunaan

Percentile Rank

SQL
1SELECT
2 name,
3 salary,
4 PERCENT_RANK() OVER (ORDER BY salary) AS percentile
5FROM employees;

Menghitung posisi relatif gaji setiap karyawan.

Hasil
namesalarypercentile
Andi50000000
Budi70000000.25
Citra90000000.5
Dewi120000000.75
... 1 baris lainnya

Filter Top 10%

SQL
1SELECT *
2FROM (
3 SELECT
4 product_name,
5 sales,
6 PERCENT_RANK() OVER (ORDER BY sales DESC) AS pct_rank
7 FROM products
8) ranked
9WHERE pct_rank <= 0.1;

Mencari produk di top 10% penjualan.

Perbandingan dengan CUME_DIST

SQL
1SELECT
2 score,
3 PERCENT_RANK() OVER (ORDER BY score) AS pct_rank,
4 CUME_DIST() OVER (ORDER BY score) AS cume_dist
5FROM test_results;

PERCENT_RANK dimulai dari 0, CUME_DIST tidak pernah 0.