Sobes.tech
Middle

¿Cuál es la diferencia entre una función de ventana y una función de agregación en SQL?

sobes.tech AI

Respuesta de la IA

La función de agregación en SQL (por ejemplo, SUM, AVG, COUNT) calcula un valor final para un grupo de filas y devuelve una sola fila por grupo. Por ejemplo, SUM(salary) calculará la suma de los salarios en todo el grupo.

La función de ventana (window function) también trabaja con grupos de filas, pero devuelve un resultado para cada fila, considerando el contexto de la ventana (el conjunto de filas alrededor de la fila actual). Por ejemplo, SUM(salary) OVER (PARTITION BY department) devolverá la suma de salarios por departamento para cada fila, sin reducir el resultado a una sola fila.

Ejemplo:

SELECT employee_id, department, salary,
       SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;

Aquí, para cada fila, se mostrará la suma de salarios en el departamento, en lugar de una sola fila por departamento, como ocurre con la función de agregación con GROUP BY.