-1
myTable
是日期和量,我想計算最新5個交易日的平均交易量 - 不僅是最高日期 - 而且是任何給定的@myDate
。 這工作得很好:SQL Server訂購頂部
select AVG(volume)
from
(select Top (5)
volume, date
from
myTable
where
data <= @myDate
order by
date desc) t
我檢查了幾次,我用子選擇總是帶來了給@myDate
之前最新的5個記錄。
但我不那麼有信心,也許它意外地工作,因爲我的索引。
這裏是我的問題:
- 如果SQL Server首先做的
order by date desc
,然後挑選那麼它會一直工作得很好,在這種情況下,我可以依靠的結果 - 但如果SQL Sever的首先選擇,然後選擇
order by date desc
,然後我不能依賴結果 - 我的測試用例可能會意外運行良好。
SQL Server總是首先計算order by
然後計算Top(5)
?
我可以依靠這個嗎?
[TOP](http://msdn.microsoft.com/en-gb/library/ms189463.aspx):「當'TOP'和'ORDER BY'子句一起使用時,結果集是有限的到第**個排序的**行的第N個數字「(我強調) – 2014-09-24 14:54:04
它總是按順序排列前5 5 – 2014-09-24 14:55:33
非常感謝達米安和傑弗裏這是重要的知道! 我不能相信它我在這裏被愚弄 - 要求一個最值得考慮的是負面評價。 – 2014-09-24 15:03:28