Aan de slagGa gratis aan de slag

Aantal dagen tussen incidenten berekenen

Iets wat je misschien in de vorige twee oefeningen hebt gemerkt, is dat we niet op elke dag van de week incidenten hebben. LAG() en LEAD() de "vorige dag" noemen is dus een beetje misleidend; het is eigenlijk de "vorige periode". Iemand van het management viel dit ook op en wilde eind juli weten hoeveel dagen er tussen incidenten zaten. Om dit te doen, berekenen we twee waarden: het aantal dagen sinds het vorige incident en het aantal dagen tot het volgende incident.

Onthoud dat DATEDIFF() het verschil tussen twee datums geeft. We kunnen dit combineren met LAG() en LEAD() om onze resultaten te krijgen.

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in SQL Server

Cursus bekijken

Oefeninstructies

  • Bereken het aantal dagen sinds het laatste incident met een combinatie van DATEDIFF() en LAG() of LEAD().
  • Bereken het aantal dagen tot het volgende incident met een combinatie van DATEDIFF() en LAG() of LEAD().
  • LET OP: je hoeft de kolom NumberOfIncidents in deze oefening niet te gebruiken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

SELECT
	ir.IncidentDate,
	ir.IncidentTypeID,
    -- Fill in the days since last incident
	___(DAY, ___(ir.IncidentDate, 1) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	), ir.___) AS DaysSinceLastIncident,
    -- Fill in the days until next incident
	___(DAY, ir.___, ___(ir.IncidentDate, 1) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	)) AS DaysUntilNextIncident
FROM dbo.IncidentRollup ir
WHERE
	ir.IncidentDate >= '2019-07-02'
	AND ir.IncidentDate <= '2019-07-31'
	AND ir.IncidentTypeID IN (1, 2)
ORDER BY
	ir.IncidentTypeID,
	ir.IncidentDate;
Code bewerken en uitvoeren