LAG i LEAD

Funkcje okna, które odczytują wartość z poprzedniego (LAG) lub następnego (LEAD) wiersza, bez samodzielnego złączenia.

Składnia

LAG(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
LEAD(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
  • offset to, o ile wierszy wstecz lub w przód (domyślnie 1). default zastępuje NULL na krańcach.

Przykład

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

Każde zamówienie z datą poprzedniego zamówienia; pierwsze zamówienie ma NULL.

Użyte tabele: orders. Wypróbuj to w lekcji poniżej.

Typowe błędy

  • Bez ORDER BY wewnątrz OVER wynik zależy od kolejności wierszy i nie jest wiarygodny.
  • Dodaj PARTITION BY, gdy porównanie ma pozostać w obrębie grupy, na przykład jednego klienta.

Ćwicz to