Ich habe eine Tabelle mit Kunden und Bewertungen (basierend auf verschiedenen Faktoren, in diesem Fall irrelevant; ein Kunde kann mehrere Bewertungen haben), die so aussieht:
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
Das score_giver_id
ist irrelevant, aber ich würde es trotzdem gerne holen.
Im obigen Beispiel sollte das Ergebnis sein, wenn das 50. Perzentil, gruppiert nach customer_id, abgerufen wird (in diesem Beispiel habe ich das 50. Perzentil ausgewählt, da es veranschaulicht, was ich besser machen möchte):
customer_id | score | score_giver_id
====================================
1 | 101 | 1
2 | 131 | 3
3 | 223 | 1
Ich habe die hier beschriebene Methode angewendet .
Ich muss den Wert abrufen, der beim 10. Perzentil bzw. beim 90. Perzentil in PostgreSQL liegt. Ich habe gesehen, dass es seit 9.4 eine ntile
Funktion gibt, aber ich verstehe nicht wirklich, wie es funktioniert, was es tut und ob es mir hilft.
Ich habe ein schönes Snippet für MySQL gefunden, das funktioniert (obwohl es einige Einschränkungen gibt), aber ich würde gerne eingebaute Funktionen verwenden, falls verfügbar (für MySQL gibt es keine, daher das Snippet).
quelle