Window
PostgreSQL
NTILE
Membagi data menjadi n bucket/grup dengan jumlah anggota seimbang. Berguna untuk analisis quartile, percentile, dan segmentasi data.
Tipe hasil:
integerSyntax
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
1 SELECT 2 name, 3 salary, 4 NTILE(4) OVER (ORDER BY salary) AS quartile 5 FROM employees;
Membagi karyawan ke 4 quartile berdasarkan gaji.
Hasil
| name | salary | quartile |
|---|---|---|
| Andi | 5000000 | 1 |
| Budi | 7000000 | 1 |
| Citra | 9000000 | 2 |
| Dewi | 12000000 | 3 |
| ... 1 baris lainnya | ||
Segmentasi Customer
SQL
1 SELECT 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 9 FROM customer_stats;
Membuat tier customer berdasarkan pembelian.
Hasil
| customer_id | total_purchases | tier |
|---|---|---|
| 101 | 10000000 | Gold |
| 102 | 5000000 | Silver |
| 103 | 1000000 | Bronze |
Decile Analysis
SQL
1 SELECT 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 6 FROM test_results 7 GROUP BY decile 8 ORDER BY decile;
Analisis distribusi skor per decile (10 grup).