Totali progressivi con SUM()
Uno degli usi più potenti delle funzioni finestra è il calcolo dei totali progressivi: un conteggio cumulativo di un determinato valore su un intervallo di tempo. Qui vogliamo usare una funzione finestra per calcolare quanti incidenti si sono verificati in ciascuna data e per ciascun tipo di incidente a luglio 2019, oltre a un conteggio progressivo del numero totale di incidenti per tipo di incidente. Una funzione finestra ci aiuterà a risolvere questo problema in un’unica query.
Questo esercizio fa parte del corso
Analisi delle serie temporali in SQL Server
Istruzioni dell'esercizio
- Completa con la funzione finestra corretta.
- Compila la clausola
PARTITION BYnella funzione finestra, partizionando per ID del tipo di incidente. - Compila la clausola
ORDER BYnella funzione finestra, ordinando per data dell’incidente (nel suo ordine predefinito, crescente).
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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;