2016-09-14 31 views
0

我有這樣如何在排序表後獲取行的位置?

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

表我想在TOTALMARKS的遞減順序表中的數據進行排序,然後排序之後我想要得到的特定ID的位置。

在這種情況下,944是ID 14的最高TOTALMARKS,因此它的位置將是第1位(排序後它將位於頂部)。因此,我想要的是,只有TOTALMARKS排序後相應ID的位置。

在這裏,當我想知道ID 17的位置,然後我會希望得到的結果爲3

回答

0

您可以使用子查詢做到這一點:

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

注意:此實現的功能rank(),所以具有相同值marks的ID獲得相同的排名。而且,還有漏洞(所以,100,100,99分給1,1,2)。如果你不想要洞,那麼用count(distinct marks)而不是count(*)

+0

謝謝你,戈登。有效!!!非常感謝。 –