Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 如何根据具体情况选择前五名记录_Sql_Sql Server_Greatest N Per Group - Fatal编程技术网

Sql 如何根据具体情况选择前五名记录

Sql 如何根据具体情况选择前五名记录,sql,sql-server,greatest-n-per-group,Sql,Sql Server,Greatest N Per Group,我在下面给出了一张表 ID NAME 1 100 2 90 3 80 4 70 5 60 6 60 7 60 若表中的第6条和第7条记录的值与第5条相同,则返回第6条和第7条。但如果它与第5条不同,那么它将只返回前5条记录 提前感谢 假设您需要5个最重要的唯一值,您可以使用 工作小提琴:试试这个 SELECT ID, Name FROM dbo.Tablename WHERE Name IN (SELECT TOP 5 Name FROM dbo.Tablename

我在下面给出了一张表

ID NAME  
1 100  
2 90  
3 80  
4 70  
5 60  
6 60  
7 60
若表中的第6条和第7条记录的值与第5条相同,则返回第6条和第7条。但如果它与第5条不同,那么它将只返回前5条记录


提前感谢

假设您需要5个最重要的唯一值,您可以使用

工作小提琴:

试试这个

SELECT ID, Name
FROM dbo.Tablename
WHERE Name IN (SELECT TOP 5 Name FROM dbo.Tablename order by Name desc)
order by Name desc
您还可以使用类似于稠密_秩的秩

尝试下面的查询-

select id,name from 
(select id, name, RANK() OVER(ORDER BY Name DESC) as r from yourtbl) t
where r<=5

这是否仅适用于第6条和第7条记录?如果名称在第1-4个ID组中重复而不是在最后一个ID组中重复,该怎么办?例如,如果ID=1和ID=2会有相同的名称?这算是一行还是两行?是的,这仅适用于第6行和第7行。这仅适用于样本数据意外按名称DESC排序。此外,ID决定顺序。这仅适用于样本数据意外按名称DESC排序。此外,ID决定顺序,只有在前n名的最后一个,才应该使用全名组。但是ID决定了顺序。
select id,name from 
(select id, name, RANK() OVER(ORDER BY Name DESC) as r from yourtbl) t
where r<=5
select top 5 WITH TIES id, name from t order by name desc