SQL 查询从列表中获取最高 "n"分数

标签 sql sql-server puzzle

我想找到不同的方法来解决我遇到的现实生活问题:想象一下进行一场比赛或一场游戏,在此期间用户收集积分。您必须构建一个查询来显示具有最佳“n”分数的用户列表。

我举一个例子来澄清。假设这是用户表,其中包含获得的积分:

UserId - Points
1      - 100
2      -  75
3      -  50
4      -  50
5      -  50
6      -  25

如果我想要前 3 个分数,结果将是:

UserId - Points
1      - 100
2      -  75
3      -  50
4      -  50
5      -  50

这可以根据需要在 View 或存储过程中实现。我的目标数据库是Sql Server。实际上我解决了这个问题,但我认为有不同的方法来获得结果......比我的更快或更有效。

最佳答案

未经测试,但应该可以工作:

select * from users where points in
(select distinct top 3 points from users order by points desc)

关于SQL 查询从列表中获取最高 "n"分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743/

相关文章:

sql - Oracle SQL - 在月-当前年 (-1) 到月-当前年之间选择日期

使用 CASE、GROUP BY 和 HAVING 的 SQL UPDATE

java - 为什么它不会从集合中删除?

puzzle - 可能的组合数

MySQL:当列 "foo"早于 2015-01-01 时更新列 "job_date"

sql - 如何强制多个唯一集(列组合)在SQLite中互斥?

mysql - SQL 查询查找连续行中的数字序列

sql-server - 创建临时表前先检查临时表是否存在,如果存在则删除

ios - 曼哈顿启发式 IDA* 算法的正确实现是什么?

mysql - 如何从一张表中查找其子表有重复值的记录?