2016-09-14 3 views
0

Ich habe eine Tabelle wie dieseWie erhält man die Position einer Zeile nach dem Sortieren der Tabelle?

ID   TOTALMARKS 
___   __________ 
12   623 
32   350 
14   944 
11   540 
17   549 

ich die Daten der Tabelle in absteigender Reihenfolge des TOTALMARKS sortieren will und dann, nachdem sie das Sortieren mag ich die Position der spezifischen ID bekommen.

In diesem Fall ist 944 der höchste TOTALMARKS von ID 14, daher ist seine Position 1. (die nach dem Sortieren oben liegt). Also was ich will, ist nur die Position der entsprechenden ID nach dem TOTALMARKS sortiert ist.

Hier wird, wenn ich 17 die Position von ID wissen wollen, dann werde ich das Ergebnis als 3.

Antwort

0

erwarten Sie diese mit einer Unterabfrage kann:

select 1 + count(*) 
from t 
where t.marks > (select t2.marks from t where t2.id = 14); 

Hinweis: Dies implementiert die Funktionalität von rank(), so IDs mit dem gleichen Wert von marks bekommen den gleichen Rang. Und, es gibt Löcher (Also, Scores von 100,100,99 geben 1, 1, 2). Wenn Sie keine Löcher möchten, verwenden Sie count(distinct marks) statt count(*).

+0

Danke, Gordon. Es funktionierte!!! Ich danke dir sehr. –

Verwandte Themen