嗨,我正在尝试通过使用分数来获得比赛的前十名。问题是当有两个用户得分相同时,例如,我只获得前 9 名有效(如果有两个前 3 名得分,则应该返回 11 条记录,其余的记录是唯一的)......
我不确定如何解决这个问题,并希望得到一些指导。
提前致谢,
伊恩
嗨,我正在尝试通过使用分数来获得比赛的前十名。问题是当有两个用户得分相同时,例如,我只获得前 9 名有效(如果有两个前 3 名得分,则应该返回 11 条记录,其余的记录是唯一的)......
我不确定如何解决这个问题,并希望得到一些指导。
提前致谢,
伊恩
如果有两个前 3 分,则应返回 11 条记录
听起来你想使用dense_rank
.
这将为您提供前 10 名中的所有行。
select T.Score
from (
select Score,
dense_rank() over(order by Score) as rn
from YourTable
) T
where T.rn <= 10
你想这样做:
SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;
有关详细信息,请参阅TOP (Transact-SQL)
顶级语法允许联系
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
你试过吗?