sql - SQL Server:从每周总和到每周平均数
问题描述
我有每日生产数据,我将其分组为每周数据,如下所示:
declare @rundate datetime = '2019-04-22'
select
convert(date, max (usedate)) as recorddate,
DATEDIFF(d, usedate, @rundate)/7 as weeks_ago,
sum(usecount) as usecountsum
from
usagetable
where
usedate <> @rundate and
DATEDIFF(d, usedate, @rundate) >= 0
group by
DATEDIFF(d, usedate, @rundate)/7
order by
weeks_ago asc
任何人都可以建议有效的方法来从上面获取另一个表格,其以下列标题应该是不言自明的:
recorddate mostrecentweek weeklyavglast4weeks weeklyavglast26weeks weeklyavglast52weeks
谢谢
解决方案
这是我最后的结果:
declare @rundate datetime = '2019-04-22'
;with grp as (
select
convert(date, max (usedate)) as recorddate,
DATEDIFF(d, usedate, @rundate)/7 as weeks_ago,
sum(usecount) as usecountsum
from
usagetable
where
usedate <> @rundate and
DATEDIFF(d, usedate, @rundate) >= 0
group by
DATEDIFF(d, usedate, @rundate)/7
order by
weeks_ago asc )
select
usedate,
usecount as LastWk,
avg(usecount) OVER (ORDER BY usedate desc ROWS BETWEEN 0 PRECEDING AND 3 FOLLOWING) as FourWkMA,
avg(usecount) OVER (ORDER BY usedate desc ROWS BETWEEN 0 PRECEDING AND 25 FOLLOWING) as TwentySixWkMA,
avg(usecount) OVER (ORDER BY usedate desc ROWS BETWEEN 0 PRECEDING AND 51 FOLLOWING) as FiftyTwoWkMA
from
grp
order by
usedate desc
推荐阅读
- sql-server - 将同一表的行值与特定条件进行比较
- php - 如何比较电报/mysql?
- java - 使用 gson 将自定义数组列表保存到共享首选项
- antlr - ANTLR4:使用关键字(别名?)清理语法和树
- c# - 是否有任何可能的方法可以将整个电子邮件信息 (.msg) 从 Outlook 拖放到 Web 应用程序中?
- reactjs - React-router url 在手动刷新或写入时不起作用,但在本地它起作用?并且路由需要 webpack
- python - Django:按答案分组 query_set
- javascript - document.getSelection().toString() 在使用 iframe 时始终为“”
- mysql - 无法看到 docker 容器内的表
- azure - 使用 Azure Powershell Runbook 将 AzureAD 用户作为 db_owner 添加到 Azure SQL 数据库