获取TOP n PERCENT查询中的最后一条记录

时间:2011-01-26 16:01:20

标签: sql sql-server

我试图在我的数据中找到某些百分位数的边界,即10%标记处的价值是多少,因此有人必须超过10%才能达到最高值。

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

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

...然后引用最后返回的记录。

有谁知道我可以运行什么查询来直接获取该值? ORDER BY子句似乎导致所有问题,因为我无法将上述运行作为子查询,并且它已经是查询不可或缺的部分,因此无法使用它来获取底部记录。我确信必须有一个简单的方法。

提前致谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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