0Pricing
SQL Academy · Lezione

Lag/Lead con finestre frame

Combini LAG/LEAD con finestre frame per calcolare variazioni tra periodi e rilevare lacune nelle serie temporali.

Lag/Lead con finestre frame è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Riepilogo di LAG/LEAD

LAG(col, n) restituisce il valore di n righe precedente alla riga corrente nella finestra. LEAD(col, n) guarda in avanti.

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

LAG con valore predefinito

Il terzo argomento è il valore predefinito da usare quando non esiste una riga vicina:

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

Calcolo delle differenze

Variazione giorno su giorno:

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

LAG su più righe

Confronto con N giorni fa, utile per i confronti settimana su settimana e anno su anno:

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

LEAD per gli slot previsionali

Schema "Qual è il prossimo evento?":

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;

Schemi per utente

LAG/LEAD rispettano 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.

Rilevamento dei cambiamenti di stato

Combini LAG con CASE:

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

FIRST_VALUE/LAST_VALUE

Il primo o l'ultimo valore all'interno del frame:

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

L'ennesimo valore di una finestra ordinata:

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

Funzioni di frame per gruppo

Combini LAG con PARTITION BY per ottenere i valori vicini raggruppati:

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;

Prestazioni

Le funzioni finestra eseguono un ordinamento per ogni partizione. Indicizzi le colonne (PARTITION BY, ORDER BY) quando le partizioni sono grandi.

Riepilogo

LAG/LEAD rendono economico il confronto tra righe consecutive.

  • Il valore predefinito evita NULL
  • Le combini con CASE per rilevare i cambiamenti di stato
  • FIRST_VALUE/LAST_VALUE/NTH_VALUE completano la famiglia

Verifica rapida

Vuole includere in ogni riga l'intervallo, in secondi, fino al prossimo evento dell'utente. Quale funzione usa?

Domande Frequenti

La lezione «Lag/Lead con finestre frame» è gratuita?

Sì — il testo completo di «Lag/Lead con finestre frame» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Lag/Lead con finestre frame»?

Combini LAG/LEAD con finestre frame per calcolare variazioni tra periodi e rilevare lacune nelle serie temporali. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Lag/Lead con finestre frame»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Clausole frame: ROWS e RANGE
  2. Lag/Lead con finestre frame
  3. Raggruppamento con NTILE e Cume_Dist
  4. Schemi di reporting nel mondo reale
← Torna a SQL Academy