ฉันมีตารางที่มีลูกค้าและคะแนน (ขึ้นอยู่กับปัจจัยต่าง ๆ ที่ไม่เกี่ยวข้องในกรณีนี้ลูกค้าสามารถมีหลายคะแนน) ซึ่งมีลักษณะดังนี้:
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 จัดกลุ่มโดย customer_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 ไม่มีเลยดังนั้นตัวอย่าง)