Middle
¿Para qué se utilizan las funciones de ventana en SQL?
sobes.tech AI
Respuesta de la IA
Las funciones de ventana en SQL realizan agregaciones de datos en un conjunto de filas relacionadas con la fila actual, pero sin agrupar el conjunto de resultados. Esto permite realizar cálculos como sumas acumulativas, medias móviles o ranking, manteniendo todas las filas de la consulta original.
Los principales objetivos del uso de funciones de ventana:
- Ranking: Asignar un rango a cada fila en una ventana determinada.
-- Obtenemos el rango de empleados por salario dentro de cada departamento SELECT employee_name, salary, department, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank FROM employees; - Cálculo de estadísticas por grupo de filas sin agrupación: Agregación de datos dentro de una "ventana" de filas, manteniendo la granularidad a nivel de fila.
-- Calculamos el salario medio por todo el departamento para cada fila SELECT employee_name, salary, department, AVG(salary) OVER (PARTITION BY department) as avg_department_salary FROM employees; - Comparación de la fila actual con otras filas en la ventana: Acceso a datos de filas anteriores o posteriores en la ventana.
-- Obtenemos el salario del empleado anterior en el departamento en orden descendente de salario SELECT employee_name, salary, department, LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary FROM employees; - Cálculos con suma acumulada: Cálculo de sumas, medias y otras agregaciones en un acumulado creciente.
-- Calculamos la suma acumulada de ventas por fecha SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales FROM sales;
A diferencia de las funciones de agregación normales (GROUP BY), las funciones de ventana no colapsan filas, lo que las convierte en una herramienta poderosa para consultas analíticas y análisis detallado de datos.