PaliSkill
SQL — Fonctions de fenêtrage

Leçon 7 / 9 — Chapitre 3: LAG et LEAD approfondis

LAG/LEAD avec un PARTITION BY sur plusieurs colonnes

PARTITION BY accepte plusieurs colonnes séparées par une virgule : les partitions sont alors formées par chaque combinaison de valeurs.

Table du chapitre 1 :

ventes_journalieres
id | vendeur  | region | montant
1  | Aya      | nord   | 200
2  | Aya      | nord   | 250
3  | Aya      | sud    | 150
4  | Boubou   | nord   | 300
5  | Boubou   | sud    | 100
6  | Boubou   | sud    | 180
SELECT id, vendeur, region, montant,
  LAG(montant) OVER (PARTITION BY vendeur, region ORDER BY id) AS montant_precedent
FROM ventes_journalieres;

Ici, les partitions sont formées par chaque paire (vendeur, region) : (Aya, nord), (Aya, sud), (Boubou, nord), (Boubou, sud). La ligne id 6 (Boubou, sud, 180) a pour ligne précédente dans sa propre partition id 5 (Boubou, sud, 100) : montant_precedent vaut 100. La ligne id 3 (Aya, sud) est seule dans sa partition (Aya, sud) : montant_precedent vaut NULL.

À retenir :

  • PARTITION BY colonne1, colonne2 forme une partition par combinaison unique de valeurs des deux colonnes, pas seulement par la première.
  • LAG/LEAD (comme toute fonction de fenêtre) ne regarde jamais au-delà des limites de sa propre partition, même multi-colonnes.

À vous de jouer : quelle est la valeur de montant_precedent pour la ligne id 2 (Aya, nord, 250) ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 72 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès