0Pricing
SQL Academy · Aula

Lag/Lead com janelas de quadro

Combine LAG/LEAD com janelas de quadro para calcular variações entre períodos e detectar lacunas em séries temporais.

Lag/Lead com janelas de quadro é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Recapitulação de LAG/LEAD

LAG(col, n) retorna o valor n linhas antes da linha atual na janela. LEAD(col, n) olha para frente.

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

LAG com valor padrão

O terceiro argumento é um valor padrão quando não existe uma linha vizinha:

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

Calculando diferenças

Variação de um dia para o outro:

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

LAG em várias etapas

Comparar com N dias atrás — útil para comparações semana a semana e ano a ano:

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

LEAD para intervalos de previsão

Padrões do tipo "Qual é o próximo 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;

Padrões por usuário

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

Detectando mudanças de estado

Combinar LAG com CASE:

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

FIRST_VALUE/LAST_VALUE

O primeiro ou o último valor dentro da moldura:

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

O enésimo valor de uma janela ordenada:

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

Funções de moldura por grupo

Combinar LAG com PARTITION BY para obter linhas vizinhas agrupadas:

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;

Desempenho

As funções de janela ordenam uma vez por partição. Crie índices nas colunas de PARTITION BY e ORDER BY quando as partições forem grandes.

Recapitulação

LAG/LEAD tornam barata a comparação entre linhas consecutivas.

  • O valor padrão evita NULL
  • Combine com CASE para detectar mudanças de estado
  • FIRST_VALUE/LAST_VALUE/NTH_VALUE completam a família

Verificação rápida

Você quer que cada linha inclua o intervalo, em segundos, até o próximo evento do usuário. Qual função deve usar?

Perguntas Frequentes

A aula “Lag/Lead com janelas de quadro” é grátis?

Sim — o texto completo de “Lag/Lead com janelas de quadro” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Lag/Lead com janelas de quadro”?

Combine LAG/LEAD com janelas de quadro para calcular variações entre períodos e detectar lacunas em séries temporais. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Lag/Lead com janelas de quadro”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Cláusulas de quadro: ROWS vs RANGE
  2. Lag/Lead com janelas de quadro
  3. Agrupamento em faixas com NTILE e Cume_Dist
  4. Padrões de relatórios do mundo real
← Voltar para SQL Academy