28 Stimmen

Berechnung von Perzentil-Ranglisten in MS SQL

Was ist der beste Weg, um Perzentil-Rankings (z.B. das 90. Perzentil oder der Medianwert) in MSSQL 2005 zu berechnen?

Ich möchte in der Lage sein, die 25., Median und 75. Perzentile für eine einzelne Spalte von Noten (vorzugsweise in einem einzigen Datensatz, so dass ich mit Durchschnitt, Maximum und Minimum kombinieren kann) zu wählen. Die Tabellenausgabe der Ergebnisse könnte zum Beispiel so aussehen:

Group  MinScore  MaxScore  AvgScore  pct25  median  pct75
-----  --------  --------  --------  -----  ------  -----
T1     52        96        74        68     76      84
T2     48        98        74        68     75      85

0voto

Ich würde wahrscheinlich einen Sql Server 2005 verwenden.

row_number() over (order by score ) / (select count(*) from scores)

oder etwas in dieser Richtung.

0voto

Ich würde so etwas machen wie:

select @n = count(*) from tbl1
select @median = @n / 2
select @p75 = @n * 3 / 4
select @p90 = @n * 9 / 10

select top 1 score from (select top @median score from tbl1 order by score asc) order by score desc

Ist das richtig?

0voto

Debasmita Punkte 1

Das Perzentil wird berechnet durch

(Rank -1) /(total_rows -1) wenn Sie die Werte in aufsteigender Reihenfolge sortieren.

Die unten stehende Abfrage ergibt einen Perzentilwert zwischen 0 und 1. Die Person mit den niedrigsten Noten hat 0 Perzentile.

SELECT Name, marks, (rank_1-1)/((select count(*) as total_1 from table)-1)as percentile_rank
from
(
SELECT Name,
       Marks,
       RANK() OVER (ORDER BY Marks) AS rank_1
       from table
) as A

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X