LAG et LEAD

Fonctions de fenêtrage qui lisent une valeur de la ligne précédente (LAG) ou suivante (LEAD), sans auto-jointure.

Syntaxe

LAG(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
LEAD(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
  • offset est le nombre de lignes en arrière ou en avant (1 par défaut). default remplace le NULL aux extrémités.

Exemple

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

Chaque commande avec la date de la commande précédente ; la première commande a NULL.

Tables utilisées : orders. Essayez-le dans une leçon ci-dessous.

Erreurs courantes

  • Sans ORDER BY dans OVER, le résultat dépend de l'ordre des lignes et n'est pas fiable.
  • Ajoutez PARTITION BY lorsque la comparaison doit rester dans un groupe, par exemple pour un même client.

Pratiquer