Löpande summor med SUM()
En av de mer kraftfulla användningsområdena för fönsterfunktioner är att beräkna löpande summor – en fortlöpande räkning av ett visst värde över en given tidsperiod. Här vill vi använda en fönsterfunktion för att beräkna hur många incidenter som inträffade på varje datum och incidenttyp i juli 2019, samt en löpande summa av det totala antalet incidenter per incidenttyp. En fönsterfunktion hjälper oss att lösa detta i en enda fråga.
Den här övningen är en del av kursen
Tidsserieanalys i SQL Server
Övningsinstruktioner
- Fyll i rätt fönsterfunktion.
- Fyll i
PARTITION BY-satsen i fönsterfunktionen och partitionera efter incidenttyp-ID. - Fyll i
ORDER BY-satsen i fönsterfunktionen och sortera efter incidentdatum (i standardordning, det vill säga stigande).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;