Данные за предыдущий и следующий периоды
Оконные функции LAG() и LEAD() позволяют обращаться к данным из прошлых или будущих периодов соответственно. Это даёт возможность сравнивать данные по периодам в одном простом запросе.
В этом упражнении нужно сравнить количество инцидентов безопасности по дням для типов 1 и 2 за июль 2019 года — конкретно за период с 2 по 31 июля.
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Заполните оконную функцию, которая возвращает количество инцидентов за предыдущий день, разбитых на разделы по идентификатору типа инцидента и упорядоченных по дате инцидента.
- Заполните оконную функцию, которая возвращает количество инцидентов за следующий день, разбитых на разделы по идентификатору типа инцидента и упорядоченных по дате инцидента.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
-- Get the prior day's number of incidents
___(ir.___, ___) OVER (
-- Partition by incident type ID
PARTITION BY ir.___
-- Order by incident date
ORDER BY ir.___
) AS PriorDayIncidents,
ir.NumberOfIncidents AS CurrentDayIncidents,
-- Get the next day's number of incidents
___(ir.___, ___) OVER (
-- Partition by incident type ID
PARTITION BY ir.___
-- Order by incident date
ORDER BY ir.___
) AS NextDayIncidents
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentDate >= '2019-07-02'
AND ir.IncidentDate <= '2019-07-31'
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;