Die drei vorherigen Perioden ansehen
Die Fensterfunktionen LAG() und LEAD() ermöglichen es uns, jeweils rückwärts bzw. vorwärts in der Zeit zu schauen. So können wir Periodenvergleiche mit einer einzigen, einfachen Abfrage durchführen. Jeder Aufruf von LAG() oder LEAD() liefert entweder NULL oder eine einzelne Zeile zurück. Wenn du mehrere Perioden zurück (oder voraus) sehen möchtest, kannst du mehrere Aufrufe von LAG() oder LEAD() einbauen.
In dieser Übung wollen wir die Anzahl der Sicherheitsvorfälle pro Tag für die Vorfalltypen 1 und 2 im Juli 2019 vergleichen, konkret für den Zeitraum vom 2. Juli bis zum 31. Juli. Das Management möchte ein rollierendes Vier-Tage-Fenster je Vorfalltyp sehen, um eventuelle Trends zu erkennen, beginnend zwei Tage davor und mit einem Blick einen Tag in die Zukunft.
Diese Übung ist Teil des Kurses
Zeitreihenanalyse in SQL Server
Anleitung zur Übung
- Ergänze das SQL, um die Anzahl der Vorfälle von vor zwei Perioden zurückzugeben.
- Ergänze das SQL, um die Anzahl der Vorfälle aus der vorherigen Periode zurückzugeben.
- Ergänze das SQL, um die Anzahl der Vorfälle aus der nächsten Periode zurückzugeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
-- Fill in two periods ago
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS Trailing2Day,
-- Fill in one period ago
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS Trailing1Day,
ir.NumberOfIncidents AS CurrentDayIncidents,
-- Fill in next period
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS NextDay
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentDate >= '2019-07-01'
AND ir.IncidentDate <= '2019-07-31'
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;