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

ila*_*ila 6 sql sql-server puzzle

我想找到解决现实问题的不同方法:想象一下比赛或比赛,用户收集积分.您必须构建一个查询以显示具有最佳"n"分数的用户列表.

我正在做一个例子来澄清.让我们说这是用户表,获得的积分:

UserId - Points
1      - 100
2      -  75
3      -  50
4      -  50
5      -  50
6      -  25
Run Code Online (Sandbox Code Playgroud)

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

UserId - Points
1      - 100
2      -  75
3      -  50
4      -  50
5      -  50
Run Code Online (Sandbox Code Playgroud)

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

Esp*_*spo 10

未经测试,但应该工作:

select * from users where points in
(select distinct top 3 points from users order by points desc)
Run Code Online (Sandbox Code Playgroud)