Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server MSSQL选择前10名,但包括具有重复值的列_Sql Server - Fatal编程技术网

Sql server MSSQL选择前10名,但包括具有重复值的列

Sql server MSSQL选择前10名,但包括具有重复值的列,sql-server,Sql Server,嗨,我正在尝试通过使用分数来获得比赛的前十名优胜者。问题是,当有两个用户拥有相同的分数时,例如,我只得到了有效的前9名,如果有两个前3名的分数,那么应该返回11条记录,而其余的是唯一的,例如 我不知道如何解决这个问题,希望能得到一些指导 提前感谢, Ian顶部的语法允许连接 [ TOP (expression) [PERCENT] [ WITH TIES ] ] 你试过了吗 顶部语法允许连接 [ TOP (expression) [PERCENT] [ WI

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

我不知道如何解决这个问题,希望能得到一些指导

提前感谢,


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,我发布了一个新问题。希望它有意义;