2017-12-29 10 views
0

Ich habe vergeblich versucht, Zeilen von einem bestimmten Perzentil zurückzugeben, aber ich bekomme immer falsche Werte. Die Werte von SCORE in der Datenbank sind, wo das Perzentil berechnet werden soll.Berechne Perzentil in der Vertica Datenbank

Dies ist meine Abfrage. Ich versuche alle Werte zu bekommen, die in den oberen 10% sind.

Wenn ich diese Abfrage ausführen, bekomme ich einen festen Wert als Perzentil und es ist das gleiche für alle Zeilen.

Die gewünschte Ausgabe sollte alle Zeilen zurückgeben, die in das Perzentil xth fallen.

Antwort

2

Ich glaube, Sie ntile() wollen:

select i.*, ntile(10) over (order by x.score) as decile 
from tblscores_info i; 

Wenn Sie die Top-10% wollen, dann eine Unterabfrage verwenden:

select i.* 
from (select i.*, ntile(10) over (order by x.score) as decile 
     from tblscores_info i 
    ) i 
where decile = 10; 

Die PERCENTILE() Funktionen geben den Wert, dass die Bruchstelle . NTILE() ordnet tatsächlich das "Perzentil" zu.

+0

Funktioniert wie ein Charme! Ich bin nie zuvor auf ntile gestoßen –