2011-01-26 103 views
1

我试图在我的数据中找到某些百分位的界限,即什么值位于10%标记处,因此有人必须超过哪些值才能进入前10名%。获取TOP PERCENT查询中的最后一条记录

我可以通过运行一个查询,如获得该值:

SELECT TOP 10 PERCENT [Time] 
    FROM Scores 
    WHERE Lesson = 1 
    ORDER BY [Time]; 

...然后指的是最后一个记录返回。

有谁知道我可以运行哪些查询来直接获取该值? ORDER BY子句似乎会导致所有问题,因为我无法将上述运行作为子查询,并且事实上它已经是查询的一个组成部分,所以无法使用它来获取底部记录。我相信一定有一个简单的方法。

在此先感谢。

回答

4

你可以使用一个外部查询选择顶行:

SELECT TOP 1 Time 
FROM ( 
     SELECT TOP 10 PERCENT [Time] 
     FROM Scores 
     WHERE Lesson = 1 
     ORDER BY 
       Time 
     ) as Top10 
ORDER BY 
     Time DESC 
+0

这工作,谢谢。唯一的问题是,因为我使用的是SQL Server(2008),所以我不得不为子查询添加一个别名,所以在结束括号后添加了“AS Top10”。我的错,因为没有指定我正在使用的东西。再次感谢! – BinarySolo 2011-01-26 16:25:33

+0

@BinarySolo:对于大多数数据库来说都是如此,回答编辑;) – Andomar 2011-01-26 16:28:42

0
SELECT MIN(Time) 
FROM ( 
     SELECT TOP 10 PERCENT [Time] 
     FROM Scores 
     WHERE Lesson = 1 
     ORDER BY 
       Time 
) 

这将返回[时间]的最小值顶部10%的值

相关问题