【发布时间】:2021-05-18 03:28:03
【问题描述】:
场景:
我想计算迄今为止发生的整个月份的销售额的移动平均值。 每个月都有不同的天数。如果 sales_amount 为 0,则表示此人有休息日,我需要忽略该值。
样本数据:
sales_amount date
100 2021-04-01
200 2021-04-02
300 2021-04-03
0 2021-04-04
100 2021-04-05
最终的moving_average 值为 (100 + 200 + 300 + 100) / (4),因为我们忽略了 4 月 4 日,因为它的销售额为 0。
我在这个网站上发现了不符合我需求的内容: https://www.sqlservercentral.com/articles/calculate-moving-averages-using-t-sql-in-sql-server 但它是针对特定天数的,当每个月的天数不同并且我想忽略某些行时,我该如何应用它?
预期结果:
sales_amount date moving_average
100 2021-04-01 100
200 2021-04-02 150
300 2021-04-03 200
0 2021-04-04 200
100 2021-04-05 175
我尝试过的操作:
AVG (Sales_Amount) OVER (
Partition BY [Date]
Order by [Date]
,Rows Between Unbounded Preceding and Current Row)
【问题讨论】:
-
您尝试过对该站点的基本搜索吗? stackoverflow.com/search?q=%5Bsql-server%5D+running+average
-
您的预期结果是什么?
-
仅供参考“我在这个网站上发现的不符合我的需求:”“sqlservercentral”不是这个网站:)
-
@D-Shih 有帮助吗?
-
如果您使用 DDL+DML 创建 minimal reproducible example 来创建示例数据和完整的查询,那么人们可以更轻松地提供帮助。
标签: sql sql-server tsql