The Moving Average used to be complex, but with the Windowing Functions, the Moving Average is easier and performs much better.
In this video I show you how to create a moving average in SQL using the OVER Clause and the ROWS Clause.
I use the Wide World Importers and the following scripts:
select [Invoice Date Key], sum(Profit) Profit
into dbo.ProfitByDate
from [Fact].[Sale]
group by [Invoice Date Key];
select
[Invoice Date Key],
avg(Profit) OVER (ORDER BY [Invoice Date Key] ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) as AverageProfit
from dbo.ProfitByDate
order by 1
Link to the Microsoft SQL Server Over Clause.
See the original SQL Rolling Average with Windowing video.