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 daysMarco 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ónn PRECEDINGCURRENT ROWn FOLLOWINGUNBOUNDED 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_7dVentana centrada
Considere ambos sentidos:
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
) AS centred_7dSorpresa 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
- Cláusulas de marco: ROWS frente a RANGE
- Lag/Lead con ventanas de marco
- Agrupación en intervalos con NTILE y Cume_Dist
- Patrones de informes del mundo real