Kom igångKom igång gratis

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

Visa kurs

Ö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;
Redigera och kör kod