以下是行:
Id Gold
1 200
2 100
3 300
4 900
5 800
6 1000
我想要达到的是获得Id
等于5
的排名,按Gold
降序排列。
所以在订购之后,中间行应该是(NOT RETURN):
Id Gold
6 1000
4 900
5 800
SQL应该只返回3
,这是Id = 5
行的排名。
实现这一目标的最有效方法是什么?
答案 0 :(得分:1)
我只想要top
,我想:
select top 3 t.*
from t
order by gold desc;
如果您想要排名id = 5
:
select count(*)
from t
where t.gold >= (select t2.gold from t t2 where t2.id = 5);
答案 1 :(得分:0)
使用 Dense_rank ():
尝试此代码WITH cte
AS (SELECT *,
Dense_rank()
OVER(
ORDER BY [Gold] DESC) AS rank
FROM your_table)
SELECT rank
FROM cte
WHERE id = 5