获取指定的行排名编号

时间:2015-12-10 03:54:03

标签: sql sql-server

以下是行:

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行的排名。

实现这一目标的最有效方法是什么?

2 个答案:

答案 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