0Pricing
SQL Academy · Lección

Lag/Lead con ventanas de marco

Combine LAG/LEAD con ventanas de marco para calcular diferencias entre periodos y detectar huecos en series temporales.

Lag/Lead con ventanas de marco es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

Resumen de LAG/LEAD

LAG(col, n) devuelve el valor de hace n filas respecto a la fila actual de la ventana. LEAD(col, n) mira hacia delante.

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

LAG con valor predeterminado

El tercer argumento es el valor predeterminado cuando no existe ninguna fila vecina:

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

Calcular diferencias

Cambio de un día a otro:

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

LAG en varios pasos

Compare con el valor de hace N días; resulta útil para comparaciones intersemanales o interanuales:

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

LEAD para espacios de pronóstico

Patrones del tipo «¿Cuál es el 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;

Patrones por usuario

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

Detectar cambios de estado

Combine 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

El primer o el último valor dentro del marco:

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

El valor N de una ventana ordenada:

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

Funciones de marco por grupo

Combine LAG con PARTITION BY para obtener filas vecinas 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;

Rendimiento

Las funciones de ventana ordenan una vez por partición. Indexe las columnas de (PARTITION BY, ORDER BY) cuando las particiones sean grandes.

Resumen

LAG/LEAD permiten comparar filas consecutivas de forma económica.

  • El valor predeterminado evita NULL
  • Combínelas con CASE para detectar cambios de estado
  • FIRST_VALUE/LAST_VALUE/NTH_VALUE completan la familia

Comprobación rápida

Quiere que cada fila incluya el intervalo (en segundos) hasta el próximo evento del usuario. ¿Qué función debe utilizar?

Preguntas frecuentes

¿La lección «Lag/Lead con ventanas de marco» es gratis?

Sí — el texto completo de «Lag/Lead con ventanas de marco» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lag/Lead con ventanas de marco»?

Combine LAG/LEAD con ventanas de marco para calcular diferencias entre periodos y detectar huecos en series temporales. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Lag/Lead con ventanas de marco»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Cláusulas de marco: ROWS frente a RANGE
  2. Lag/Lead con ventanas de marco
  3. Agrupación en intervalos con NTILE y Cume_Dist
  4. Patrones de informes del mundo real
← Volver a SQL Academy