Sql server MSSQL选择前10名,但包括具有重复值的列
嗨,我正在尝试通过使用分数来获得比赛的前十名优胜者。问题是,当有两个用户拥有相同的分数时,例如,我只得到了有效的前9名,如果有两个前3名的分数,那么应该返回11条记录,而其余的是唯一的,例如 我不知道如何解决这个问题,希望能得到一些指导 提前感谢,Sql server MSSQL选择前10名,但包括具有重复值的列,sql-server,Sql Server,嗨,我正在尝试通过使用分数来获得比赛的前十名优胜者。问题是,当有两个用户拥有相同的分数时,例如,我只得到了有效的前9名,如果有两个前3名的分数,那么应该返回11条记录,而其余的是唯一的,例如 我不知道如何解决这个问题,希望能得到一些指导 提前感谢, Ian顶部的语法允许连接 [ TOP (expression) [PERCENT] [ WITH TIES ] ] 你试过了吗 顶部语法允许连接 [ TOP (expression) [PERCENT] [ WI
Ian顶部的语法允许连接
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
你试过了吗
顶部语法允许连接
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
你试过了吗
您希望这样做:
SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;
有关更多信息,请参见您希望执行的操作:
SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;
有关更多信息,请参阅
如果有两个前三名得分,则应返回11条记录
听起来你想用
这将为您提供前10名分数中的所有行
select T.Score
from (
select Score,
dense_rank() over(order by Score) as rn
from YourTable
) T
where T.rn <= 10
如果有两个前三名得分,则应返回11条记录
听起来你想用
这将为您提供前10名分数中的所有行
select T.Score
from (
select Score,
dense_rank() over(order by Score) as rn
from YourTable
) T
where T.rn <= 10
@事实上,重读denserank可能是我们需要的,这是一种享受!谢谢每天学习新的东西。。。很抱歉延迟了响应,它只是刚刚到达我需要实现这一点。我不想推我的运气,但有没有办法将至少一个类别包括在前10名中,即如果有3个类别,并且前10名都来自第一类,我需要将该类别的最后两个向下推,然后将第2类和第3类的前1名分数添加到结果中?或者我需要通过使用C@lanc22我想这是可能的,但我不完全明白你想做什么。你应该把这当作一个新问题来问。在你的新问题中,你应该包括一些样本数据,你现在使用的查询,这个密集等级查询,以及你使用样本数据寻找的输出。谢谢Mikael,我发布了一个新问题。希望它有意义@事实上,重读denserank可能是我们需要的,这是一种享受!谢谢每天学习新的东西。。。很抱歉延迟了响应,它只是刚刚到达我需要实现这一点。我不想推我的运气,但有没有办法将至少一个类别包括在前10名中,即如果有3个类别,并且前10名都来自第一类,我需要将该类别的最后两个向下推,然后将第2类和第3类的前1名分数添加到结果中?或者我需要通过使用C@lanc22我想这是可能的,但我不完全明白你想做什么。你应该把这当作一个新问题来问。在你的新问题中,你应该包括一些样本数据,你现在使用的查询,这个密集等级查询,以及你使用样本数据寻找的输出。谢谢Mikael,我发布了一个新问题。希望它有意义;