不同的累计和
Cumulative Sum Distinct
我有一个视图 refv_ActiveOpen
,其中有 SuburbName, Weeks, ServiceCount
,我想从中创建第二个视图,显示每周累积的 ServiceCount
。该视图必须具有不同的周和郊区名称。例如:
SuburbName |Weeks|ServiceCount|Accumulative
Pretoria |1 |100 |100
Pretoria |2 |30 |130
Johannesburg|1 |30 |30
Johannesburg|2 |20 |50
以上是我要显示的结果。对于每个郊区,都应该有一列显示不同的郊区以及每个郊区每周 运行 总数的变化情况。我总计获得了 运行 的总分,但这不是我想要的。请协助
在大多数数据库中,您可以使用 ANSI 标准累积和函数:
select t.*,
sum(Service_Count) over (partition by SuburbName order by weeks) as accumulative
from refv_ActiveOpen t;
自 2012 版以来,SQL 服务器已支持此功能。
您可以通过窗口函数使用求和和排序
Select *, accumulative = sum(service count) over(partition by suburb name, weeks order by weeks) from yourtable
ANSI-SQL,应该适用于任何 RDBMS:
SELECT t1.SuburbName, t1.Weeks, t1.ServiceCount, sum(t2.ServiceCount) as Accumulative
FROM refv_ActiveOpen t1
INNER JOIN refv_ActiveOpen t2
ON t1.SuburbName = t2.SuburbName -- Same suburb
AND t1.Weeks >= t2.Weeks -- All the weeks up to the week from t1.
GROUP BY t1.SuburbName, t1.Weeks, t1.ServiceCount
这使用自连接为您的 table(别名 t1
)的每一行生成相同郊区的匹配行集,周数 相同或更低。然后对后面的行求和以获得前几周的累计服务数量。
我有一个视图 refv_ActiveOpen
,其中有 SuburbName, Weeks, ServiceCount
,我想从中创建第二个视图,显示每周累积的 ServiceCount
。该视图必须具有不同的周和郊区名称。例如:
SuburbName |Weeks|ServiceCount|Accumulative
Pretoria |1 |100 |100
Pretoria |2 |30 |130
Johannesburg|1 |30 |30
Johannesburg|2 |20 |50
以上是我要显示的结果。对于每个郊区,都应该有一列显示不同的郊区以及每个郊区每周 运行 总数的变化情况。我总计获得了 运行 的总分,但这不是我想要的。请协助
在大多数数据库中,您可以使用 ANSI 标准累积和函数:
select t.*,
sum(Service_Count) over (partition by SuburbName order by weeks) as accumulative
from refv_ActiveOpen t;
自 2012 版以来,SQL 服务器已支持此功能。
您可以通过窗口函数使用求和和排序
Select *, accumulative = sum(service count) over(partition by suburb name, weeks order by weeks) from yourtable
ANSI-SQL,应该适用于任何 RDBMS:
SELECT t1.SuburbName, t1.Weeks, t1.ServiceCount, sum(t2.ServiceCount) as Accumulative
FROM refv_ActiveOpen t1
INNER JOIN refv_ActiveOpen t2
ON t1.SuburbName = t2.SuburbName -- Same suburb
AND t1.Weeks >= t2.Weeks -- All the weeks up to the week from t1.
GROUP BY t1.SuburbName, t1.Weeks, t1.ServiceCount
这使用自连接为您的 table(别名 t1
)的每一行生成相同郊区的匹配行集,周数 相同或更低。然后对后面的行求和以获得前几周的累计服务数量。