簡體   English   中英

SQL Server 2008滾動平均值

[英]SQL Server 2008 Rolling Average

我正在嘗試創建一條SQL語句來為我的數據計算6個月的滾動平均值。 我正在遵循此指南:

在SQL Server中進行7天平均滾動查詢的SQL查詢

但問題是我正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM