Lag/Lead mit Frame-Fenstern
Kombinieren Sie LAG/LEAD mit Frame-Fenstern, um Differenzen zwischen Zeiträumen zu berechnen und Lücken in Zeitreihen zu erkennen.
Lag/Lead mit Frame-Fenstern ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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/LEAD-Zusammenfassung
LAG(col, n) gibt den Wert n Zeilen vor der aktuellen Zeile im Fenster zurück. LEAD(col, n) blickt voraus.
SELECT day, revenue,
LAG(revenue) OVER (ORDER BY day) AS prev_day_revenue
FROM daily_revenue;LAG mit Standardwert
Das dritte Argument ist der Standardwert, wenn kein Nachbar vorhanden ist:
LAG(revenue, 1, 0) OVER (ORDER BY day)
-- Returns 0 instead of NULL for the very first row.Differenzen berechnen
Veränderung zum Vortag:
SELECT day, revenue,
revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;Mehrstufiges LAG
Mit dem Wert vor N Tagen vergleichen — nützlich für Woche-zu-Woche- und Jahr-zu-Jahr-Vergleiche:
LAG(revenue, 7) OVER (ORDER BY day) -- 7 days ago
LAG(revenue, 365) OVER (ORDER BY day) -- 1 year agoLEAD für Prognoseplätze
Muster nach dem Prinzip „Was ist das nächste Ereignis?“:
SELECT id, ts,
LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) AS next_ts,
LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) - ts AS gap_to_next
FROM events;Muster pro Benutzer
LAG/LEAD berücksichtigen PARTITION BY:
SELECT user_id, ts, action,
LAG(action) OVER (PARTITION BY user_id ORDER BY ts) AS prev_action
FROM events;
-- prev_action is the user's previous event, not globally.Zustandsänderungen erkennen
LAG mit CASE kombinieren:
SELECT id, status,
CASE WHEN status <> LAG(status) OVER (ORDER BY ts) THEN 'changed' ELSE 'same' END
FROM orders;FIRST_VALUE / LAST_VALUE
Der erste oder letzte Wert innerhalb des Frames:
FIRST_VALUE(status) OVER (PARTITION BY order_id ORDER BY ts) AS first_status
-- The status when the order was first seen.
LAST_VALUE(status) OVER (
PARTITION BY order_id ORDER BY ts
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS final_statusNTH_VALUE
Der N-te Wert eines sortierten Fensters:
NTH_VALUE(revenue, 3) OVER (
ORDER BY revenue DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
-- Third-highest revenue value.Frame-Funktionen pro Gruppe
LAG mit PARTITION BY für gruppierte Nachbarwerte kombinieren:
SELECT user_id, ts, page,
LAG(page) OVER (PARTITION BY user_id ORDER BY ts) AS prev_page,
LEAD(page) OVER (PARTITION BY user_id ORDER BY ts) AS next_page
FROM page_views;Leistung
Fensterfunktionen sortieren einmal pro Partition. Indizieren Sie die Spalten aus (PARTITION BY, ORDER BY), wenn die Partitionen groß sind.
Zusammenfassung
LAG/LEAD machen Vergleiche zwischen aufeinanderfolgenden Zeilen kostengünstig.
- Ein Standardwert verhindert NULL
- Mit CASE zur Erkennung von Zustandsänderungen kombinieren
- FIRST_VALUE/LAST_VALUE/NTH_VALUE vervollständigen die Funktionsfamilie
Schnelltest
Jede Zeile soll die Lücke (in Sekunden) bis zum nächsten Ereignis des Benutzers enthalten. Welche Funktion verwenden Sie?
Häufig gestellte Fragen
Ist die Lektion „Lag/Lead mit Frame-Fenstern“ kostenlos?
Ja — der vollständige Text von „Lag/Lead mit Frame-Fenstern“ 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 mit Frame-Fenstern“?
Kombinieren Sie LAG/LEAD mit Frame-Fenstern, um Differenzen zwischen Zeiträumen zu berechnen und Lücken in Zeitreihen zu erkennen. 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 2 von 4.
Wie lange dauert die Lektion „Lag/Lead mit Frame-Fenstern“?
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
- Frame-Klauseln: ROWS vs. RANGE
- Lag/Lead mit Frame-Fenstern
- Bucketing mit NTILE und Cume_Dist
- Praxisnahe Muster für Berichte