queryLab · software_de_entrenamiento en espera
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.
sql-window.sql
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.
sql-window.sql
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.
sql-window.sql
Presiona «ejecutar» para ver el resultado.

▸ Ejercicios

  1. Numera (ROW_NUMBER) a los empleados por salario descendente dentro de cada departamento.
  2. Usa LEAD para ver el salario del siguiente empleado en el ranking.
  3. Divide a los empleados en deciles (NTILE 10) por salario.