Вычисление скользящего среднего
Вместо накопленного итога с начала всего периода руководство хотело бы видеть среднее количество инцидентов за последние 7 дней — то есть начиная с 6 дней назад и заканчивая текущей датой. Поскольку этот расчёт ведётся по фиксированному фрейму, который смещается по мере выполнения запроса, такой показатель называется скользящим средним.
SQL Server не поддерживает временны́е диапазоны в оконных функциях, поэтому будем считать, что в таблице есть ровно одна строка на каждый день, и воспользуемся предложением ROWS.
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Укажите правильную оконную функцию для вычисления скользящего среднего за период с 6 дней назад по сегодняшний день (текущую строку).
- Определите оконный фрейм: добавьте предложение
ROWS, укажите количество предшествующих строк и признак текущей строки.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
ir.NumberOfIncidents,
-- Fill in the correct window function
___(ir.NumberOfIncidents) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
-- Fill in the three parts of the window frame
___ BETWEEN ___ AND ___
) AS MeanNumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
c.CalendarYear = 2019
AND c.CalendarMonth IN (7, 8)
AND ir.IncidentTypeID = 1
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;