ÎncepețiÎncepe gratuit

Calcularea zilelor scurse între incidente

Poate ai observat în exercițiile anterioare că nu avem întotdeauna incidente în fiecare zi a săptămânii, astfel că denumirea „ziua anterioară" pentru LAG() și LEAD() poate fi un pic înșelătoare – este, de fapt, „perioada anterioară". Cineva din conducere a observat și el acest lucru și, la sfârșitul lunii iulie, a dorit să știe numărul de zile dintre incidente. Pentru a obține aceste informații, vom calcula două valori: numărul de zile de la incidentul anterior și numărul de zile până la următorul incident.

Amintește-ți că DATEDIFF() returnează diferența dintre două date. O putem combina cu LAG() și LEAD() pentru a obține rezultatele dorite.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Calculează numărul de zile de la ultimul incident folosind o combinație între DATEDIFF() și LAG() sau LEAD().
  • Calculează numărul de zile până la următorul incident folosind o combinație între DATEDIFF() și LAG() sau LEAD().
  • NOTĂ: nu vei folosi coloana NumberOfIncidents în acest exercițiu.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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;
Editează și rulează codul