Funciones de ventana: OVER

Calcula sobre filas sin contraerlas. OVER indica qué filas mirar, como RANK y los totales acumulados en Excel.

Sintaxis

ROW_NUMBER() OVER (ORDER BY column)
RANK() OVER (ORDER BY column)
SUM(column) OVER (PARTITION BY column ORDER BY column)
  • PARTITION BY reinicia el cálculo en cada grupo.
  • A diferencia de GROUP BY, todas las filas permanecen en el resultado.

Ejemplo

SELECT order_id, RANK() OVER (ORDER BY order_date) AS day_rank FROM orders;

Cada pedido con su posición por fecha. Los pedidos del mismo día comparten posición.

Tablas usadas: orders. Pruébalo en una lección de abajo.

Errores comunes

  • ROW_NUMBER da a cada fila un número distinto; RANK da el mismo número a los empates y salta los números siguientes.
  • Las funciones de ventana se ejecutan después de WHERE, así que no puedes usar sus resultados en WHERE. Envuelve la consulta en una subconsulta o en WITH para filtrar por ellos.

Practícalo