使用COUNT() OVER 計算分區上的不同值
克服使用COUNT() OVER 分區函數時計算不同值的挑戰是SQL Server 中的常見問題。本文探討了另一種方法,結合使用ensemble_rank()和算術運算來實現所需的結果。
原始查詢和錯誤
原始查詢嘗試計算使用COUNT(DISTINCT) OVER 計算不同值的運行總計:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
但是, SQL Server 會產生錯誤由於DISTINCT 與分割區函數不相容。
使用Dense_rank() 的替代解決方案
此問題的實際解決方案是結合使用denense_rank() 函數使用簡單的算術運算:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
此表達式計算每個月內不同值的運算總計。它的工作原理如下:
以上是如何計算 SQL Server 分割區內的不同值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!