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.