LoslegenKostenlos loslegen

Verstrichene Tage zwischen Vorfällen berechnen

Vielleicht ist dir in den letzten beiden Übungen aufgefallen, dass nicht an jedem Wochentag Vorfälle auftreten. LAG() und LEAD() als „vorheriger Tag“ zu bezeichnen, ist daher etwas irreführend – es geht eigentlich um den „vorherigen Zeitraum“. Das ist auch dem Management aufgefallen, und Ende Juli wollten sie wissen, wie viele Tage zwischen Vorfällen liegen. Dafür berechnen wir zwei Werte: die Anzahl der Tage seit dem vorherigen Vorfall und die Anzahl der Tage bis zum nächsten Vorfall.

Erinnere dich: DATEDIFF() liefert die Differenz zwischen zwei Datumswerten. Das können wir mit LAG() und LEAD() kombinieren, um unsere Ergebnisse zu erhalten.

Diese Übung ist Teil des Kurses

Zeitreihenanalyse in SQL Server

Kurs anzeigen

Anleitung zur Übung

  • Berechne die Tage seit dem letzten Vorfall mithilfe einer Kombination aus DATEDIFF() und LAG() oder LEAD().
  • Berechne die Tage bis zum nächsten Vorfall mithilfe einer Kombination aus DATEDIFF() und LAG() oder LEAD().
  • HINWEIS: In dieser Übung benötigst du die Spalte NumberOfIncidents nicht.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen