获取使用SQL的用户排名

时间:2015-02-23 21:30:40

标签: sql sql-server

在Sql Server数据库中,我有一个表,其中包含用户得分的列:

enter image description here

我想创建一个获取用户排名的查询,例如,如果输入为“user4”,我将获得1,如果输入为“user2”,我将获得5等。

我在MySql中编写了这样的查询,但现在我需要在SQL server中实现它。

2 个答案:

答案 0 :(得分:3)

您想使用rank()row_number()dense_rank()。 SQL Server提供以下功能:

select t.*, rank() over (order by score desc) as therank
from table t;

三个功能之间的区别在于它们如何处理关系。你的样本数据没有联系,所以他们都会返回相同的东西。

编辑:

对于特定用户,您可以使用子查询:

select therank
from (select t.*, rank() over (order by score desc) as therank
      from table t
     ) t
where user = @user;

答案 1 :(得分:0)

select rank 
from
(
  select username, rank() over (order by score desc) as rank
  from table
) t
where username = 'user4'