[英]SQL Server 2008 Rolling Average
我正在嘗試創建一條SQL語句來為我的數據計算6個月的滾動平均值。 我正在遵循此指南:
但問題是我正在使用SQL Server 2008,而答案是2012。
select
x.*,
avg(dailyusage) over(partition by productid order by productid, date rows between 6 preceding and current row) as rolling_avg
from
(select
productid, date, sum(usagecount) as dailyusage
from tbl
group by productid, date) x
如果有人可以幫助我將其翻譯成2008年的條款,我們將不勝感激。
謝謝
您可以嘗試使用OUTER APPLY
,但是效率不高:
;WITH CTE AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY productid ORDER BY [date]) RN
FROM ( SELECT productid, [date], SUM(usagecount) dailyusage
FROM dbo.YourTable
GROUP BY productid, [date]
) t
)
SELECT TOP 100 *
FROM CTE A
OUTER APPLY(SELECT AVG(dailyusage) rolling_avg
FROM CTE
WHERE productid = A.productid
AND A.RN - RN BETWEEN 0 AND 6) B;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.