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
Anleitung zur Übung
- Berechne die Tage seit dem letzten Vorfall mithilfe einer Kombination aus
DATEDIFF()undLAG()oderLEAD(). - Berechne die Tage bis zum nächsten Vorfall mithilfe einer Kombination aus
DATEDIFF()undLAG()oderLEAD(). - HINWEIS: In dieser Übung benötigst du die Spalte
NumberOfIncidentsnicht.
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;