Aggregate
DuckDB
QUANTILE
Menghitung nilai pada posisi kuantil tertentu dari distribusi data. Mendukung single quantile atau array of quantiles sekaligus.
Tipe hasil:
Sama dengan tipe input (atau LIST jika input quantile adalah array)Diperbarui: 6 Jan 2026Syntax
SQL
QUANTILE(expression, quantile) | QUANTILE(expression, [q1, q2, ...])Parameter
expressionnumericwajib
Kolom atau ekspresi numerik yang akan dihitung kuantilnya
quantileDOUBLE atau LISTwajib
Posisi kuantil (0.0 sampai 1.0) atau array of quantiles
Contoh Penggunaan
Menghitung Quartiles
SQL
1 SELECT 2 category, 3 QUANTILE(price, 0.25) as Q1, 4 QUANTILE(price, 0.50) as median, 5 QUANTILE(price, 0.75) as Q3 6 FROM products 7 GROUP BY category;
Menghitung quartile 1, median, dan quartile 3 harga per kategori.
Hasil
| category | Q1 | median | Q3 |
|---|---|---|---|
| Electronics | 500000 | 2500000 | 8000000 |
| Clothing | 150000 | 350000 | 750000 |
Multiple Quantiles dengan Array
SQL
1 SELECT 2 region, 3 QUANTILE(salary, [0.1, 0.5, 0.9]) as salary_distribution 4 FROM employees 5 GROUP BY region;
Menghitung persentil 10, 50, dan 90 sekaligus dengan array.
Hasil
| region | salary_distribution |
|---|---|
| Jakarta | [8000000, 15000000, 35000000] |
| Surabaya | [6000000, 12000000, 25000000] |
Percentile untuk Response Time
SQL
1 SELECT 2 endpoint, 3 QUANTILE(response_ms, 0.50) as p50, 4 QUANTILE(response_ms, 0.90) as p90, 5 QUANTILE(response_ms, 0.99) as p99, 6 MAX(response_ms) as max_response 7 FROM api_logs 8 WHERE log_date = CURRENT_DATE 9 GROUP BY endpoint 10 ORDER BY p99 DESC;
Analisis latency dengan p50, p90, dan p99 untuk monitoring SLA.
Hasil
| endpoint | p50 | p90 | p99 | max_response |
|---|---|---|---|---|
| /api/search | 45 | 120 | 350 | 1250 |
| /api/users | 12 | 35 | 85 | 320 |
| /api/health | 2 | 5 | 10 | 45 |