Мне нужно рассчитать скользящее среднее.
Я могу получить это с помощью Alteryx, но не могу получить желаемый результат с помощью SQL.
В основном я установил значения для периода.
Значение доступно для 6периоды, и я хочу прогнозировать следующие значения, используя скользящее среднее значение.
, например,
Period Value
01-04-2016 4
01-05-2016 5
01-06-2016 6
Для периода 01-07-2016 это будет (4 + 5 + 6) / 3 = 5
И следующие значения
Period Value
01-05-2016 5
01-06-2016 6
01-07-2016 5
Для периода 01-08-2016 это будет (5 + 6 + 5) / 3 = 5,33333.
(6 + 5+5,333) / 3 = 5,44444
(5 + 5,3333 + 5,4444) = 5,259259
и т. Д.
В таблице ниже 3MonthForecast - ожидаемый результат.
CREATE TABLE [dbo].[MovingAvg]
(
[Period] [date] NULL,
[Value] [float] NULL,
[3MonthForecast] [float] NULL
)
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-01-01' AS Date), 1, 1)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-02-01' AS Date), 2, 2)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-03-01' AS Date), 3, 3)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-04-01' AS Date), 4, 4)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-05-01' AS Date), 5, 5)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-06-01' AS Date), 6, 6)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-07-01' AS Date), null, 5)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-08-01' AS Date), null, 5.333333333)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-09-01' AS Date), null, 5.444444444)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-10-01' AS Date), null, 5.259259259)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-11-01' AS Date), null, 5.345679012)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2016-12-01' AS Date), null, 5.349794239)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2017-01-01' AS Date), null, 5.31824417)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2017-02-01' AS Date), null, 5.337905807)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2017-03-01' AS Date), null, 5.335314739)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2017-04-01' AS Date), null, 5.330488239)
GO
INSERT [dbo].[MovingAvg] ([Period], [Value], [3MonthForecast]) VALUES (CAST(N'2017-05-01' AS Date), null, 5.334569595)