Window

NTILE

PostgreSQLPostgreSQL

Membagi data menjadi n bucket/grup dengan jumlah anggota seimbang. Berguna untuk analisis quartile, percentile, dan segmentasi data.

Tipe hasil: integer

Syntax

SQL
NTILE(num_buckets) OVER (
  [PARTITION BY partition_expression]
  ORDER BY sort_expression
)

Parameter

num_bucketsintegerwajib

Jumlah bucket/grup yang diinginkan

ORDER BYexpressionwajib

Menentukan urutan pembagian

PARTITION BYexpressionopsional

Membagi data menjadi grup terpisah

Contoh Penggunaan

Membagi ke Quartile

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

Membagi karyawan ke 4 quartile berdasarkan gaji.

Hasil
namesalaryquartile
Andi50000001
Budi70000001
Citra90000002
Dewi120000003
... 1 baris lainnya

Segmentasi Customer

SQL
1SELECT
2 customer_id,
3 total_purchases,
4 CASE NTILE(3) OVER (ORDER BY total_purchases DESC)
5 WHEN 1 THEN Gold
6 WHEN 2 THEN Silver
7 WHEN 3 THEN Bronze
8 END AS tier
9FROM customer_stats;

Membuat tier customer berdasarkan pembelian.

Hasil
customer_idtotal_purchasestier
10110000000Gold
1025000000Silver
1031000000Bronze

Decile Analysis

SQL
1SELECT
2 NTILE(10) OVER (ORDER BY score) AS decile,
3 MIN(score) AS min_score,
4 MAX(score) AS max_score,
5 COUNT(*) AS count
6FROM test_results
7GROUP BY decile
8ORDER BY decile;

Analisis distribusi skor per decile (10 grup).