gpt4 book ai didi

sql - 可以使用 DISTINCT 进行分区函数 COUNT() OVER

转载 作者:行者123 更新时间:2023-12-01 17:25:01 27 4
gpt4 key购买 nike

我正在尝试编写以下内容,以获得不同 NumUsers 的运行总数,如下所示:

NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])

管理工作室似乎对此不太高兴。当我删除 DISTINCT 关键字时,错误消失,但它不会是一个不同的计数。

DISTINCT 在分区函数中似乎不可能。我如何找到不同的计数?我是否使用更传统方法,例如相关子查询?

进一步研究一下,也许这些 OVER 函数的工作方式与 Oracle 不同,因为它们不能在 SQL-Server 中用于计算运行总计。

我在 SQLfiddle 上添加了一个实例我尝试使用分区函数来计算运行总计。

最佳答案

有一个非常简单的解决方案,使用 dense_rank()

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

这将准确地满足您的要求:每个月内不同 UserAccountKey 的数量。

关于sql - 可以使用 DISTINCT 进行分区函数 COUNT() OVER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202878/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com