0Pricing
SQL Academy · Lección

Cláusulas de marco: ROWS frente a RANGE

Elija entre las cláusulas de marco ROWS BETWEEN y RANGE BETWEEN y comprenda cómo gestiona cada una los duplicados y los huecos.

Cláusulas de marco: ROWS frente a RANGE es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 1 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.

El marco dentro de OVER

Una función de ventana se evalúa sobre un marco: un subconjunto de filas de la partición. El marco se define mediante:

OVER (
  PARTITION BY ...
  ORDER BY ...
  ROWS BETWEEN <start> AND <end>     -- or RANGE BETWEEN ...
)

Marco predeterminado

Si especifica ORDER BY pero no un marco, el valor predeterminado es:

RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-- "From the first row up to all rows tied with the current row".

ROWS cuenta físicamente

ROWS cuenta N filas en el orden de la partición, independientemente del valor:

SUM(x) OVER (ORDER BY day ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
-- The current row plus the previous 2.  Exactly 3 rows.

RANGE cuenta por valor

RANGE cuenta las filas cuyo valor de ORDER BY se encuentra dentro de una ventana del valor actual:

SUM(x) OVER (
  ORDER BY day
  RANGE BETWEEN INTERVAL '2 days' PRECEDING AND CURRENT ROW
)
-- All rows within 2 days (by calendar) of the current row.

Por qué importa la diferencia

Si hay saltos en los datos, ROWS y RANGE producen resultados diferentes:

-- Days: 1, 3, 5 (no 2 or 4)
-- ROWS BETWEEN 2 PRECEDING AND CURRENT ROW for day 5: rows 1,3,5 = 3 days
-- RANGE BETWEEN INTERVAL '2 days' PRECEDING for day 5: only days 3,5 = 2 days

Marco GROUPS (PG 11+)

GROUPS cuenta grupos de pares (empates en ORDER BY) en lugar de filas individuales:

SUM(x) OVER (
  ORDER BY tier
  GROUPS BETWEEN 1 PRECEDING AND CURRENT ROW
)
-- "The current tier and the previous tier" — useful when ORDER BY has many ties.

Límites del marco

  • UNBOUNDED PRECEDING — primera fila de la partición
  • n PRECEDING
  • CURRENT ROW
  • n FOLLOWING
  • UNBOUNDED FOLLOWING — última fila

Total acumulado

Suma desde el principio hasta aquí:

SUM(x) OVER (ORDER BY day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-- Same as the default frame.

Ventana retrospectiva

El promedio retrospectivo de N días:

AVG(revenue) OVER (
  ORDER BY day
  ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS avg_7d

Ventana centrada

Considere ambos sentidos:

AVG(revenue) OVER (
  ORDER BY day
  ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
) AS centred_7d

Sorpresa de LAST_VALUE

LAST_VALUE con el marco predeterminado devuelve la fila actual, no la última de la partición. Utilice un marco explícito sin límites:

LAST_VALUE(name) OVER (
  PARTITION BY group ORDER BY day
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)

Cláusula EXCLUDE (PG 11+)

Omita determinadas filas del marco:

SUM(x) OVER (
  ORDER BY day
  ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
  EXCLUDE CURRENT ROW
)
-- All previous 6 days but not today.

Resumen

Las cláusulas de marco permiten controlar con precisión las ventanas.

  • ROWS — cantidad de filas físicas
  • RANGE — intervalo basado en valores
  • GROUPS — grupos de pares
  • El marco predeterminado puede sorprenderle; sea explícito

Comprobación rápida

Tiene ingresos diarios con días ausentes. ¿Qué marco proporciona «todas las filas de los 7 días naturales anteriores al momento actual»?

Preguntas frecuentes

¿La lección «Cláusulas de marco: ROWS frente a RANGE» es gratis?

Sí — el texto completo de «Cláusulas de marco: ROWS frente a RANGE» 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 «Cláusulas de marco: ROWS frente a RANGE»?

Elija entre las cláusulas de marco ROWS BETWEEN y RANGE BETWEEN y comprenda cómo gestiona cada una los duplicados y los huecos. 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 1 de 4.

¿Cuánto tiempo toma la lección «Cláusulas de marco: ROWS frente a RANGE»?

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