SQL · avanzado
[SQL] Funciones de ventana (Window functions)
ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, NTILE y OVER.
Las funciones de ventana calculan sobre un conjunto de filas relacionadas
(la «ventana») sin colapsarlas como hace GROUP BY. Se definen con
OVER (PARTITION BY … ORDER BY …). Permiten rankings, comparar con la fila anterior o
siguiente, y dividir en cuantiles.
SQLite 3.25+ / MySQL 8+ / Oracle
Todas soportan window functions con la misma sintaxis OVER().Práctica · ejecuta cada bloque
01Ranking de salarios por departamento
RANK reinicia en cada partición. ROW_NUMBER da un correlativo único; DENSE_RANK no deja huecos en empates.Presiona «ejecutar» para ver el resultado.
02Comparar con la fila anterior (LAG)
LAG trae el valor de la fila previa según el orden: aquí, la diferencia de salario con quien le sigue.Presiona «ejecutar» para ver el resultado.
03Cuartiles con NTILE
NTILE(4) reparte las filas en 4 grupos de tamaño parejo según el salario.Presiona «ejecutar» para ver el resultado.
▸ Ejercicios
- Numera (ROW_NUMBER) a los empleados por salario descendente dentro de cada departamento.
- Usa LEAD para ver el salario del siguiente empleado en el ranking.
- Divide a los empleados en deciles (NTILE 10) por salario.