Нарастающие итоги с помощью SUM()
Одно из наиболее эффективных применений оконных функций — вычисление нарастающих итогов: накопленного значения определённого показателя за выбранный период времени. В этом упражнении нужно использовать оконную функцию, чтобы подсчитать количество инцидентов по каждой дате и типу инцидента за июль 2019 года, а также получить нарастающий итог общего числа инцидентов по типу. Оконная функция позволит решить эту задачу в рамках одного запроса.
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Укажите подходящую оконную функцию.
- Заполните предложение
PARTITION BYв оконной функции, выполнив секционирование по идентификатору типа инцидента. - Заполните предложение
ORDER BYв оконной функции, упорядочив данные по дате инцидента (в порядке по умолчанию — по возрастанию).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
ir.NumberOfIncidents,
-- Get the total number of incidents
___(ir.NumberOfIncidents) OVER (
-- Do this for each incident type ID
PARTITION BY ir.___
-- Sort by the incident date
ORDER BY ir.___
) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
c.CalendarYear = 2019
AND c.CalendarMonth = 7
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;