LAG und LEAD

Fensterfunktionen, die einen Wert aus der vorherigen (LAG) oder nächsten (LEAD) Zeile lesen, ohne Self-Join.

Syntax

LAG(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
LEAD(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
  • offset gibt an, wie viele Zeilen zurück oder vor (Standard: 1). default ersetzt das NULL an den Rändern.

Beispiel

SELECT order_id, order_date, LAG(order_date) OVER (ORDER BY order_id) AS prev_date FROM orders ORDER BY order_id;

Jede Bestellung mit dem Datum der davorliegenden Bestellung; die erste Bestellung hat NULL.

Verwendete Tabellen: orders. Probiere es unten in einer Lektion aus.

Häufige Fehler

  • Ohne ORDER BY innerhalb von OVER hängt das Ergebnis von der Zeilenreihenfolge ab und ist nicht verlässlich.
  • Füge PARTITION BY hinzu, wenn der Vergleich innerhalb einer Gruppe bleiben soll, etwa bei einem Kunden.

Übe es