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

时间:2015-12-08 11:12:29

标签: 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个记录。

提前致谢!!!

4 个答案:

答案 0 :(得分:1)

假设您需要5个顶级唯一值,则可以使用DENSE_RANK()

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

工作时间: http://sqlfiddle.com/#!6/8da1e

答案 1 :(得分:0)

试试这个。

SELECT ID, Name
FROM dbo.Tablename
WHERE Name IN (SELECT TOP 5 Name FROM dbo.Tablename order by Name desc)
order by Name desc

答案 2 :(得分:0)

select top 5 WITH TIES id, name from t order by name desc

答案 3 :(得分:-1)

您还可以使用与RANK()

类似的DENSE_RANK()

尝试以下查询 -

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