LAG, LEAD und Zeitreihenmuster
Vergleichen Sie jede Zeile mit ihrer vorherigen oder nächsten Zeile mithilfe von LAG und LEAD und erstellen Sie Veränderungen von Periode zu Periode.
LAG, LEAD und Zeitreihenmuster ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
LAG und LEAD: Blick zurück und voraus
Diese Funktionen greifen auf benachbarte Zeilen im Fenster zu:
LAG(col, n, default)— Wert n Zeilen vor der aktuellen ZeileLEAD(col, n, default)— Wert n Zeilen danach
Vorherige Zeile
Vergleichen Sie jede Bestellung mit der vorherigen Bestellung desselben Benutzers:
SELECT id, user_id, created_at, total,
LAG(total) OVER (
PARTITION BY user_id ORDER BY created_at
) AS prev_total
FROM orders;Differenz zum Vortag
Differenz zum vorherigen Tag:
SELECT day, revenue,
revenue - LAG(revenue) OVER (ORDER BY day) AS delta
FROM daily_revenue
ORDER BY day;Jahresvergleich
LAG mit Offset 12 in einer monatlichen Zeitreihe:
SELECT month, revenue,
LAG(revenue, 12) OVER (ORDER BY month) AS prev_year_revenue,
revenue / NULLIF(LAG(revenue, 12) OVER (ORDER BY month), 0) - 1 AS yoy
FROM monthly_revenue;Lücken erkennen
Finden Sie Tage mit fehlenden Daten:
WITH d AS (
SELECT day, LAG(day) OVER (ORDER BY day) AS prev_day FROM daily_signups
)
SELECT day, prev_day, day - prev_day AS gap_days
FROM d
WHERE day - prev_day > 1;Sitzungsbildung
Gruppieren Sie Zeilen zu Sitzungen, wenn die Lücke einen Schwellenwert überschreitet:
WITH gaps AS (
SELECT user_id, ts,
CASE WHEN ts - LAG(ts) OVER (PARTITION BY user_id ORDER BY ts)
> INTERVAL '30 min'
THEN 1 ELSE 0 END AS new_session
FROM events
)
SELECT user_id, ts,
SUM(new_session) OVER (PARTITION BY user_id ORDER BY ts) AS session_id
FROM gaps;Erster und letzter Wert einer Gruppe
FIRST_VALUE und LAST_VALUE ermitteln die Grenzen des Fensters:
SELECT id, total,
FIRST_VALUE(total) OVER (PARTITION BY user_id ORDER BY created_at) AS first_order,
LAST_VALUE(total) OVER (PARTITION BY user_id ORDER BY created_at
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_order
FROM orders;
-- LAST_VALUE needs the explicit frame, otherwise default frame ends at current row.NTH_VALUE
Wählen Sie den N-ten Wert in der Partition:
SELECT id,
NTH_VALUE(total, 2) OVER (
PARTITION BY user_id ORDER BY total DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS second_largest
FROM orders;Standardwert für Zeitreihen
Das dritte Argument von LAG ist der Standardwert, wenn keine vorherige Zeile vorhanden ist:
SELECT day, revenue,
revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;
-- delta on first day = revenue itself (vs NULL)Entsprechung mit Self-Join
Sie könnten LAG als Self-Join schreiben, aber das wäre langsamer und unübersichtlicher. Bevorzugen Sie immer Fensterfunktionen.
Leistung
Fensterfunktionen durchlaufen die Partition einmal. Der Engpass ist die Sortierung — indizieren Sie nach Möglichkeit die ORDER-BY-Spalten.
Zusammenfassung
LAG und LEAD ermöglichen Vergleiche zwischen Zeilen.
- Vorherige/nächste Zeile innerhalb der Partition
- Differenzen, Periodenvergleiche, Sitzungsbildung
- FIRST_VALUE/LAST_VALUE für Grenzen
Kurze Überprüfung
Sie möchten die tägliche Veränderung des Umsatzes berechnen. Welche Fensterfunktion verwenden Sie?
Lerne SQL mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 46
- Lektionen
- 183
Häufig gestellte Fragen
Ist die Lektion „LAG, LEAD und Zeitreihenmuster“ kostenlos?
Ja — der vollständige Text von „LAG, LEAD und Zeitreihenmuster“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „LAG, LEAD und Zeitreihenmuster“?
Vergleichen Sie jede Zeile mit ihrer vorherigen oder nächsten Zeile mithilfe von LAG und LEAD und erstellen Sie Veränderungen von Periode zu Periode. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „LAG, LEAD und Zeitreihenmuster“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- OVER, PARTITION BY, ORDER BY
- ROW_NUMBER, RANK, DENSE_RANK
- LAG, LEAD und Zeitreihenmuster
- Laufende Summen und gleitende Durchschnitte