Ich habe eine Tabelle, die eine bestimmte numerische Spalte namens Score
hat. Ich möchte eine Abfrage für diese Tabelle ausführen, deren Ergebnis 100 Zeilen haben wird, von denen jede die Punktzahl darstellt, die diesem Perzentil entspricht. Zum Beispiel kann ein Ergebnis kann wie folgt aussehen:SQL: Perzentil finden
Percentile | Score
---------------------
01 | 10
02 | 12
03 | 12
04 | 17
... | ...
99 | 1684
100 | 1685
Die Score-Werte in der Ergebnistabelle oben sind die tatsächlichen Score-Werte, die in der ursprünglichen Tabelle vorhanden ist, und werden nicht interpoliert. Ein interpoliertes Ergebnis wird besser sein, ist aber keine Voraussetzung.
Es kann mehrere Heuristiken geben, die ein solches Ergebnis erzeugen können. Was ich heute (im Code) benutze, ist im Prinzip wie folgt: Der Score-Wert, der einem Perzentil entspricht, ist der Score-Wert, für den: die Anzahl der Zeilen mit kleineren Scores geteilt durch die Gesamtzahl der Zeilen auf eine ganze Zahl gerundet wird , entspricht den Perzentil (ich hoffe, dass klar ist)
ich andere Heuristik betrachten kann, wenn sie leichter sind
ich in MS-SQL zu implementieren gerade arbeitete, würde aber eine Lösung zu schätzen wissen, die auch auf MySQL arbeitet.
Was ist der beste Weg, dies zu erreichen?
Ich bin mir nicht sicher, ob es am besten ist, diese selbst in SQL zu implementieren. – Amber
@Dav: Ich bin mir auch nicht sicher. Ich versuche zu verstehen, ob dies in SQL möglich ist und welche Auswirkungen dies auf die Leistung hat. Mit Dutzenden von Millionen von Datensätzen, die ich nicht im Speicher habe - vielleicht ist SQL der beste Weg. –
@Dav: ein anderer Punkt - wenn Sie denken, dass es nicht für SQL geeignet ist, und Sie können dies mit konkreten Argumenten unterstützen, das ist eine gültige ** Antwort ** ist meine Meinung. –