Sql 获取前n个百分比查询中的最后一条记录
我试图在我的数据中找到某些百分位数的界限,即10%的分数是多少,因此,要进入前10%的分数,人们必须超过多少 我可以通过运行以下查询获得该值:Sql 获取前n个百分比查询中的最后一条记录,sql,sql-server,Sql,Sql Server,我试图在我的数据中找到某些百分位数的界限,即10%的分数是多少,因此,要进入前10%的分数,人们必须超过多少 我可以通过运行以下查询获得该值: SELECT TOP 10 PERCENT [Time] FROM Scores WHERE Lesson = 1 ORDER BY [Time]; 。。。然后引用最后返回的记录 有人知道我可以运行什么查询来直接获取该值吗?ORDERBY子句似乎导致了所有问题,因为我无法将上面的语句作为子查询运行,而且它已经是查询的一个组
SELECT TOP 10 PERCENT [Time]
FROM Scores
WHERE Lesson = 1
ORDER BY [Time];
。。。然后引用最后返回的记录
有人知道我可以运行什么查询来直接获取该值吗?ORDERBY子句似乎导致了所有问题,因为我无法将上面的语句作为子查询运行,而且它已经是查询的一个组成部分,这一事实阻止了使用它来获取底部记录。我相信一定有一个简单的方法
提前感谢。您可以使用外部查询来选择顶行:
SELECT TOP 1 Time
FROM (
SELECT TOP 10 PERCENT [Time]
FROM Scores
WHERE Lesson = 1
ORDER BY
Time
) as Top10
ORDER BY
Time DESC
您可以使用外部查询选择顶行:
SELECT TOP 1 Time
FROM (
SELECT TOP 10 PERCENT [Time]
FROM Scores
WHERE Lesson = 1
ORDER BY
Time
) as Top10
ORDER BY
Time DESC
这将在前10%的值上返回[Time]的最小值
这将返回前10%值的最小[时间]值,谢谢。唯一的问题是,因为我使用的是SQL Server(2008),我必须为子查询添加一个别名,所以在结束括号后,我添加了“AS Top10”。我的错是没有说明我在用什么。再次感谢@BinarySolo:大多数数据库都是这样,答案已编辑;)行得通,谢谢。唯一的问题是,因为我使用的是SQL Server(2008),我必须为子查询添加一个别名,所以在结束括号后,我添加了“AS Top10”。我的错是没有说明我在用什么。再次感谢@BinarySolo:大多数数据库都是这样,答案已编辑;)谢谢,这个有效,只是在这种情况下我需要的是MAX而不是MIN。我想知道哪个更快,这个还是Andomar的?谢谢,这个有效,只是在这种情况下我需要的是MAX而不是MIN。我想知道哪个更快,这个还是Andomar的?