我有一张这样的表
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 :(得分: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(*)
。