Totaluri cumulate cu SUM()
Una dintre cele mai utile aplicații ale funcțiilor de fereastră este calcularea totalurilor cumulate: un contor continuu al unei anumite valori pe o perioadă de timp. Aici vrem să folosim o funcție de fereastră pentru a calcula câte incidente au avut loc în fiecare dată și tip de incident din iulie 2019, dar și un total cumulat al numărului de incidente pe tip de incident. O funcție de fereastră ne va ajuta să rezolvăm această problemă într-o singură interogare.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în SQL Server
Instrucțiuni pentru exercițiu
- Completează funcția de fereastră corectă.
- Completează clauza
PARTITION BYdin funcția de fereastră, partiționând după ID-ul tipului de incident. - Completează clauza
ORDER BYdin funcția de fereastră, ordonând după data incidentului (în ordinea implicită, crescătoare).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;