首页 >数据库 >mysql教程 >如何计算 SQL Server 分区中不同值的运行总计?

如何计算 SQL Server 分区中不同值的运行总计?

Patricia Arquette
Patricia Arquette原创
2025-01-05 00:06:37777浏览

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

PARTITION 函数 COUNT() OVER 和 DISTINCT

使用 PARTITION 函数和 COUNT() 来计算不同值的运行总计可以是SQL Server 中的挑战。虽然聚合函数支持 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