У мене є таблиця, яка містить клієнтів та оцінки (на основі різних факторів, що не мають значення в даному випадку; у клієнта може бути кілька балів), яка виглядає приблизно так:
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
Це score_giver_idне має значення, але я все-таки хотів би це отримати.
У наведеному вище прикладі, отримуючи 50-й перцентиль, згрупований за клієнтом_id, результат повинен бути (я вибрав 50-й перцентиль у цьому прикладі, тому що він ілюструє, що я хочу зробити краще):
customer_id | score | score_giver_id
====================================
1 | 101 | 1
2 | 131 | 3
3 | 223 | 1
Я використовував описаний тут метод .
Мені потрібно отримати значення, яке знаходиться на 10-му перцентилі, відповідно, на 90-му перцентилі в PostgreSQL. Я бачив, що з 9.4 є ntileфункція, але я не дуже розумію, як вона працює, що робить і чи допомагає мені.
Я знайшов хороший фрагмент для MySQL, який працює (хоча є деякі застереження), але я хотів би використовувати вбудовані функції, якщо вони доступні (для MySQL таких немає, отже, і фрагмент).