0

嗨,我正在尝试通过使用分数来获得比赛的前十名。问题是当有两个用户得分相同时,例如,我只获得前 9 名有效(如果有两个前 3 名得分,则应该返回 11 条记录,其余的记录是唯一的)......

我不确定如何解决这个问题,并希望得到一些指导。

提前致谢,

伊恩

4

3 回答 3

3

如果有两个前 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

SE-数据

于 2012-06-07T11:14:47.890 回答
1

你想这样做:

SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;

有关详细信息,请参阅TOP (Transact-SQL)

于 2012-06-07T11:06:32.197 回答
0

顶级语法允许联系

[ 
    TOP (expression) [PERCENT]
    [ WITH TIES ]
]

你试过吗?

http://msdn.microsoft.com/en-us/library/ms189463.aspx

于 2012-06-07T10:59:44.067 回答