Totales acumulados con SUM()
Uno de los usos más potentes de las funciones de ventana es calcular totales acumulados: un recuento progresivo de un valor concreto a lo largo de un periodo de tiempo. Aquí nos gustaría usar una función de ventana para calcular cuántos incidentes han ocurrido en cada fecha y tipo de incidente en julio de 2019, así como un recuento acumulado del número total de incidentes por tipo de incidente. Una función de ventana nos permitirá resolver este problema en una sola consulta.
Este ejercicio forma parte del curso
Análisis de series temporales en SQL Server
Instrucciones del ejercicio
- Completa la función de ventana correcta.
- Completa la cláusula
PARTITION BYen la función de ventana, particionando por el ID del tipo de incidente. - Completa la cláusula
ORDER BYen la función de ventana, ordenando por la fecha del incidente (en su orden ascendente predeterminado).
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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;