sql - 使用 SQL 获取用户排名

标签 sql sql-server

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

enter image description here

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

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

最佳答案

您想要使用 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;

关于sql - 使用 SQL 获取用户排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683824/

相关文章:

sql - 计算两个表中行之间的重合次数

mysql - 从其他表的表跳过记录中提取记录

c# - 调试 SQL 端散列失败

sql - 如何选择早于特定日期的行?

mysql - 如何在 LEFT JOIN 两个表后保留不满足 WHERE 子句中条件的 NULL 值行

sql - 使用 SQL Server 2005 查找不属于 2 个表的值

sql-server - 无效的列名 'Sales Quarter' 错误消息

sql - 从 SQL 获取未转义的 JSON

mysql - 如何对3个不同日期的子查询进行减法和除法?

sql-server - 为什么连续删除会花费更多时间?