НачатьНачать бесплатно

Вычисление скользящего среднего

Вместо накопленного итога с начала всего периода руководство хотело бы видеть среднее количество инцидентов за последние 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;
Редактировать и запускать код