1
我在SQL Server中遇到任務問題。我打算創建的表的名稱稱爲「目標」。如何在SQL Server中實現3天移動平均值
CREATE TABLE target
(
[entry_date] [date] NOT NULL,
[value] [int] NOT NULL,
[id] [int] NULL,
)
INSERT target VALUES ('2012-02-01', 10, 1);
INSERT target VALUES ('2012-02-02', 20, 2);
INSERT target VALUES ('2012-02-03', 10, 3);
INSERT target VALUES ('2012-02-04', 30, 4);
INSERT target VALUES ('2012-02-05', 10, 3);
INSERT target VALUES ('2012-02-06', 11, 3);
INSERT target VALUES ('2012-02-06', 40, 6);
INSERT target VALUES ('2012-02-07', 10, 2);
INSERT target VALUES ('2012-02-08', 50, 5);
INSERT target VALUES ('2012-02-09', 10, 8);
INSERT target VALUES ('2012-02-10', 60, 9);
INSERT target VALUES ('2012-02-10', 50, 9);
基於以上數據,我希望得到的輸出象下面這樣:
entry_date |value|id |averagevaluesof_3days
-----------+-----+----+----------------------
2012-02-01 |10 |1 | 10
2012-02-02 |20 |2 | 10
2012-02-03 |10 |3 | 13.3
2012-02-04 |30 |4 | 20
2012-02-05 |10 |3 | 16.6
2012-02-06 |40 |6 | 30.3
2012-02-06 |11 |3 | 30.3
2012-02-07 |10 |2 | 23.6
2012-02-08 |50 |5 | 37
2012-02-09 |10 |8 | 23.3
2012-02-10 |60 |9 | 56.6
2012-02-10 |50 |9 | 56.6
我需要在日期(entry_date
)來計算的信息運行的最後三天的平均值。
讓我提供進一步的解釋我的目標的例子:
ENTRY_DATE:2012-02-01
此日期有值,後面2個幾天不具有價值則2012-02-01平均值爲10如果我們採取2012-02-02日期有價值和返回2天意味着2012-02-01和2012-01-31這裏我們有2012-02-01日期值,但我們沒有2012-01-31日期值如果採取2012-02-03爲13.3((10 + 20 + 10)/ 3 = 13.3),則2012-02-02日期的平均值爲3日(10 + 20)/ 3 = 10)
請告訴我如何編寫查詢以實現SQL Server的此任務。