Back to Blog

SQL Where

Moving Average with Windowing in SQL Server

Master window functions for moving average calculations. Learn OVER clause, PARTITION BY, and ORDER BY for advanced analytics in SQL Server.

1 min read

Last updated on

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.

About Joey Blue

Joey Blue teaches practical data skills that companies actually use. With 25+ years of experience solving real data problems for Fortune 500 companies, he's helped 152,000+ students learn SQL, Power BI, reporting, and modern analytics—cutting straight to what works.