簡體   English   中英

計算每個月過去 12 個月的平均值?

[英]Calculate the average of the last 12 months for every month?

我有一個包含值的 SQL 服務器表:

 CREATE TABLE [dbo].[MonthleyAvarage](
    [Boxes] [int] NULL,
    [DateMonthly] [date] NULL
) ON [PRIMARY]
GO

insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (1,'01/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (10,'02/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (5,'03/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (9,'04/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (3,'05/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (7,'06/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (5,'07/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (4,'08/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (55,'09/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (6,'10/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (8,'11/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (0,'12/01/2010')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (2,'01/01/2011')
insert into MonthleyAvarage ([Boxes],[DateMonthly]) values (1,'02/01/2011')

在此處輸入圖片說明

我試圖計算每個月過去 12 個月的平均值,但我只計算了過去 12 個月的累計平均值

select AVG(Boxes) over (order by DATEADD(MONTH, DATEDIFF(MONTH, 0, DateMonthly), -12)) as avarage,DateMonthly,Boxes 
from monthleyavarage

我怎么能只用最后 12 個月? 要像這樣:

在此處輸入圖片說明

請問我該怎么做?

您可以使用帶有適當 window 子句的窗口函數:

select 
    boxes,
    dateMonthly,
    avg(boxes) 
        over(order by dateMonthly rows between 11 preceding and current row) avg_boxes
from monthleyavarage

這為您提供了當月和前 11 個月的平均值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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