Voortschrijdende totalen met SUM()
Een van de krachtigste toepassingen van windowfuncties is het berekenen van voortschrijdende totalen: een doorlopende optelling van een bepaalde waarde over een bepaalde periode. Hier willen we met een windowfunctie berekenen hoeveel incidenten er op elke datum en per incidenttype in juli 2019 hebben plaatsgevonden, én een voortschrijdende optelling van het totale aantal incidenten per incidenttype. Met één query kunnen we dit oplossen met een windowfunctie.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in SQL Server
Oefeninstructies
- Vul de juiste windowfunctie in.
- Vul de
PARTITION BY-clausule in de windowfunctie in, met een partitie op incidenttype-ID. - Vul de
ORDER BY-clausule in de windowfunctie in, sorteer op incidentdatum (in de standaard, oplopende volgorde).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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;