2
給定一個包含單個money
列的表格如何使用TSQL
來計算該表格中任意兩個值之間的最小差異?我正在尋找性能優化的解決方案,這將與數百萬行工作。MS SQL Server 2008/2012獲取任意兩個值之間的最小差異
給定一個包含單個money
列的表格如何使用TSQL
來計算該表格中任意兩個值之間的最小差異?我正在尋找性能優化的解決方案,這將與數百萬行工作。MS SQL Server 2008/2012獲取任意兩個值之間的最小差異
對於SQL Server 2012,你可以使用
;WITH CTE
AS (SELECT YourColumn - Lag(YourColumn) OVER (ORDER BY YourColumn) AS Diff
FROM YourTable)
SELECT
Min(Diff) AS MinDiff
FROM CTE
這做它用表的一次掃描(理想情況下,你會對YourColumn
索引以避免排序和對單個列窄指數將降低IO)。
我不認爲它越來越短路的一個很好的方式等方面做了表的不到一次掃描,如果發現等於零的最小可能差。將MIN(CASE WHEN Diff = 0 THEN 1/0 END)
添加到SELECT
列表中,並將除零除誤差作爲發現零的信號將可能工作,但我不能真正推薦該方法...
是的我刪除了我的評論,因爲我沒有發現。將爲後代再次發佈!在列上有一個索引的'SELECT MAX(col) - MIN(col)'將用於最大的部分。 –
它肯定會的,在它的相當快,面臨的挑戰是最小的一個:( – user1514042
我會重新短語的問題,以避免混淆,將我? – user1514042