Saya memiliki tabel yang berisi pelanggan dan skor (berdasarkan faktor yang berbeda, tidak relevan dalam kasus ini; pelanggan dapat memiliki beberapa skor), yang terlihat seperti ini:
customer_id | score | score_giver_id
====================================
1 | 100 | 1
1 | 102 | 1
1 | 101 | 1
1 | 140 | 1
2 | 131 | 3
1 | 44 | 1
3 | 223 | 1
3 | 1 | 2
3 | 201 | 1
3 | 211 | 1
3 | 231 | 1
3 | 243 | 1
Itu score_giver_id
tidak relevan, tetapi saya masih ingin mengambilnya.
Dalam contoh di atas, ketika mendapatkan persentil ke-50, yang dikelompokkan berdasarkan customer_id, hasilnya seharusnya (saya memilih persentil ke-50 dalam contoh ini, karena menggambarkan apa yang ingin saya lakukan lebih baik):
customer_id | score | score_giver_id
====================================
1 | 101 | 1
2 | 131 | 3
3 | 223 | 1
Saya menggunakan metode yang dijelaskan di sini .
Saya perlu mendapatkan nilai yang berada pada persentil ke-10, masing-masing pada persentil ke-90 di PostgreSQL. Saya telah melihat bahwa sejak 9.4 ada ntile
fungsi, tetapi saya tidak benar-benar mengerti cara kerjanya, apa fungsinya, dan jika itu membantu saya.
Saya telah menemukan cuplikan yang bagus untuk MySQL, yang berfungsi (walaupun ada beberapa peringatan), tetapi saya ingin menggunakan fungsi bawaan jika tersedia (untuk MySQL tidak ada, maka cuplikannya).