首页 > 数据库 > mysql教程 > COUNT() OVER (PARTITION BY ...) 可以在 SQL Server 中处理 DISTINCT 计数吗?

COUNT() OVER (PARTITION BY ...) 可以在 SQL Server 中处理 DISTINCT 计数吗?

DDD
发布: 2025-01-03 20:04:42
原创
801 人浏览过

Can COUNT() OVER (PARTITION BY ...) Handle DISTINCT Counts in SQL Server?

使用分区函数进行非重复计数:COUNT() OVER 与 DISTINCT

本题探讨了 SQL 的 OVER 子句在计算非重复计数时的使用。用户尝试使用带有 DISTINCT 关键字的 COUNT() OVER (PARTITION BY ...) 函数来获取给定月份内唯一用户的运行总数。然而,这种方法会遇到错误。

出现该错误是因为 SQL Server 的 OVER 函数目前不支持分区子句中的 DISTINCT 关键字。因此,用户无法在分区期间应用非重复计数。

此问题的解决方案是利用 dendense_rank() 函数。以下表达式实现了所需的输出:

dense_rank() over (partition by [Mth] order by [UserAccountKey])
+ dense_rank() over (partition by [Mth] order by [UserAccountKey] desc)
- 1
登录后复制

通过应用dense_rank() 两次并减去结果,该表达式可以有效地计算每个月内指定列中不同值的数量。此方法提供了与最初使用 DISTINCT 的 COUNT() OVER (PARTITION BY ...) 相同的功能。

以上是COUNT() OVER (PARTITION BY ...) 可以在 SQL Server 中处理 DISTINCT 计数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板