2011-01-26 104 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%的值

相關問題