0Pricing
SQL Academy · Leçon

Lag et lead avec des fenêtres de lignes

Combinez LAG/LEAD avec des fenêtres de lignes pour calculer les écarts entre périodes et détecter les intervalles manquants dans les séries temporelles.

Lag et lead avec des fenêtres de lignes est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.

Récapitulatif de LAG/LEAD

LAG(col, n) renvoie la valeur située n lignes avant la ligne actuelle dans la fenêtre. LEAD(col, n) regarde vers l'avant.

SELECT day, revenue,
       LAG(revenue) OVER (ORDER BY day) AS prev_day_revenue
FROM daily_revenue;

LAG avec une valeur par défaut

Le troisième argument est une valeur par défaut lorsqu'il n'existe aucun voisin :

LAG(revenue, 1, 0) OVER (ORDER BY day)
-- Returns 0 instead of NULL for the very first row.

Calculer les écarts

Évolution d'un jour à l'autre :

SELECT day, revenue,
       revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;

LAG en plusieurs étapes

Comparer avec la valeur d'il y a N jours — utile pour les comparaisons semaine après semaine ou année après année :

LAG(revenue, 7) OVER (ORDER BY day)   -- 7 days ago
LAG(revenue, 365) OVER (ORDER BY day) -- 1 year ago

LEAD pour les créneaux à prévoir

Modèles du type « Quel est le prochain événement ? » :

SELECT id, ts,
       LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) AS next_ts,
       LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) - ts AS gap_to_next
FROM events;

Modèles par utilisateur

LAG/LEAD respectent PARTITION BY :

SELECT user_id, ts, action,
       LAG(action) OVER (PARTITION BY user_id ORDER BY ts) AS prev_action
FROM events;
-- prev_action is the user's previous event, not globally.

Détecter les changements d'état

Combiner LAG avec CASE :

SELECT id, status,
  CASE WHEN status <> LAG(status) OVER (ORDER BY ts) THEN 'changed' ELSE 'same' END
FROM orders;

FIRST_VALUE / LAST_VALUE

La première ou la dernière valeur dans le cadre :

FIRST_VALUE(status) OVER (PARTITION BY order_id ORDER BY ts) AS first_status
-- The status when the order was first seen.

LAST_VALUE(status) OVER (
  PARTITION BY order_id ORDER BY ts
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS final_status

NTH_VALUE

La Nième valeur d'une fenêtre ordonnée :

NTH_VALUE(revenue, 3) OVER (
  ORDER BY revenue DESC
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
-- Third-highest revenue value.

Fonctions de cadre par groupe

Combiner LAG avec PARTITION BY pour obtenir les voisins de chaque groupe :

SELECT user_id, ts, page,
       LAG(page) OVER (PARTITION BY user_id ORDER BY ts) AS prev_page,
       LEAD(page) OVER (PARTITION BY user_id ORDER BY ts) AS next_page
FROM page_views;

Performances

Les fonctions de fenêtre effectuent un seul tri par partition. Indexez les colonnes (PARTITION BY, ORDER BY) lorsque les partitions sont volumineuses.

Récapitulatif

LAG/LEAD rendent les comparaisons ligne par ligne peu coûteuses.

  • La valeur par défaut évite NULL
  • Combiner avec CASE pour détecter les changements d'état
  • FIRST_VALUE/LAST_VALUE/NTH_VALUE complètent la famille

Vérification rapide

Vous voulez que chaque ligne inclue l'intervalle (en secondes) jusqu'au prochain événement de l'utilisateur. Quelle fonction utiliser ?

Questions Fréquemment Posées

La leçon « Lag et lead avec des fenêtres de lignes » est-elle gratuite ?

Oui — le texte complet de « Lag et lead avec des fenêtres de lignes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Lag et lead avec des fenêtres de lignes » ?

Combinez LAG/LEAD avec des fenêtres de lignes pour calculer les écarts entre périodes et détecter les intervalles manquants dans les séries temporelles. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Academy ?

Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Lag et lead avec des fenêtres de lignes » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?

Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Clauses de fenêtre : ROWS ou RANGE
  2. Lag et lead avec des fenêtres de lignes
  3. Regroupement avec NTILE et Cume_Dist
  4. Modèles de rapports du monde réel
← Retour à SQL Academy