Ich benutze Sql Server 2014, ich kann alle Add-ons, SSAS, was auch immer benötigt wird.Berechnen Bereich von Perzentilen in Sql Server 2014
Ich habe eine Tabelle, die der Einfachheit halber eine einzelne Spalte mit ganzen Zahlen enthält. Es kann davon ausgegangen werden, dass es 10^5 - 10^6 Zeilen enthält.
Ich möchte das 5., 10., 15. ... 90., 95. Perzentil berechnen.
Ich kann es ziemlich einfach tun, indem Sie propertile_cont (oder _disc) 18 Mal aufrufen. Leider dauert es ewig.
Die Sache ist, ich bin ziemlich sicher, dass diese Anrufe immer und immer wieder dasselbe tun.
Gibt es eine Möglichkeit, eine Reihe von Perzentilen über eine Tabelle schneller zu berechnen?
Ich kann dies leicht in C#, indem Sie alle Zeilen in den Speicher laden, bestellen sie, und nur für 0,05 * array.Length Element, 0,1 * array.Length Artikel usw. - und es ist offensichtlich unglaublich schnell. Ich kann das natürlich replizieren, indem ich eine Tabellenvariable oder eine temporäre Tabelle verwende, aber ich bin überrascht, dass es keine eingebaute Methode gibt.
Versuchen Sie, 'percentile_cont() 'als separate Spalten statt als separate Abfragen auszuführen. –
Wenn Sie mit Perzentilen arbeiten, beachten Sie, dass der Begriff nicht eindeutig ist. https://en.wikipedia.org/wiki/Percentile. Stellen Sie sicher, dass die Berechnungsmethode Ihren Geschäftsanforderungen entspricht. –
@GordonLinoff - ja, natürlich - es war 'wählen Sie percentile_cont() als p05, percentile_cont() als p10, ...'. Immer noch sehr, sehr langsam. – Gerino