首頁 >資料庫 >mysql教程 >如何計算 SQL Server 分割區中不同值的運行總計?

如何計算 SQL Server 分割區中不同值的運行總計?

Patricia Arquette
Patricia Arquette原創
2025-01-05 00:06:37817瀏覽

How to Calculate a Running Total of Distinct Values in SQL Server Partitions?

PARTITION 函數COUNT() OVER 和DISTINCT

使用PARTITION 函數和COUNT() 來計算不同值的運行總計是指不同值的運行總計是中的挑戰。雖然聚合函數支援 DISTINCT 關鍵字,但它不能在分區函數中使用。這種限制可能會令人沮喪,尤其是在嘗試計算不同值的運行總計時。

計算不同計數的傳統方法是使用相關子查詢。然而,這種方法可能效率低且難以維護。

幸運的是,有一個使用dense_rank()的簡單解決方案:

dense_rank() over (partition by [Mth] order by [UserAccountKey]) 
+ dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) 
- 1

此表達式計算每個中不同 UserAccountKey 的運行總和月。它的工作原理是首先按升序對值進行排名,然後按降序對它們進行排名,最後從兩個排名的總和中減去 1。這種方法有效地消除了重複值,同時提供不同值的運行計數。

以上是如何計算 SQL Server 分割區中不同值的運行總計?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn