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.