Avanzado
20 min de lecturaWindow Functions
Funciones que realizan cálculos sobre un conjunto de filas relacionadas
Las Window Functions realizan cálculos a través de un conjunto de filas relacionadas con la fila actual, sin agrupar los resultados.
Sintaxis
sql
1función_ventana() OVER (2 [PARTITION BY columna]3 [ORDER BY columna]4 [ROWS o RANGE entre frames]5)Funciones principales
#
ROW_NUMBER, RANK, DENSE_RANK
sql
1SELECT 2 nombre,3 salario,4 ROW_NUMBER() OVER (ORDER BY salario DESC) as fila,5 RANK() OVER (ORDER BY salario DESC) as ranking,6 DENSE_RANK() OVER (ORDER BY salario DESC) as ranking_denso7FROM empleados;#
LAG y LEAD
sql
1SELECT 2 fecha,3 total,4 LAG(total) OVER (ORDER BY fecha) as dia_anterior,5 total - LAG(total) OVER (ORDER BY fecha) as diferencia6FROM ventas_diarias;#
SUM, AVG con ventana
sql
1SELECT 2 fecha,3 total,4 SUM(total) OVER (ORDER BY fecha) as acumulado,5 AVG(total) OVER (ORDER BY fecha ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as media_movil_7d6FROM ventas_diarias;Sintaxis
Sintaxis
sql
1función() OVER (PARTITION BY columna ORDER BY columna)Ejemplos
Ranking de empleados
Ranking de salarios por departamento
Ejemplo
sql
1SELECT nombre, departamento, salario,2 RANK() OVER (PARTITION BY departamento ORDER BY salario DESC) as ranking3FROM empleados4ORDER BY departamento, ranking;Resultado:
| nombre | departamento | salario | ranking | |---------|-------------|---------|---------| | Ana | Ventas | 50000 | 1 | | Carlos | Ventas | 45000 | 2 | | María | IT | 60000 | 1 | | Pedro | IT | 55000 | 2 |