Sobes.tech
Middle

¿En qué se diferencian las funciones de ventana de la agrupación (GROUP BY)?

sobes.tech AI

Respuesta de la IA

Las funciones de ventana y la agrupación (GROUP BY) en SQL sirven para diferentes propósitos, aunque ambas trabajan con datos agregados.

GROUP BY combina filas según las columnas especificadas y devuelve una fila por cada grupo. Se pueden aplicar funciones agregadas (SUM, COUNT, etc.), pero el resultado se reduce a una sola fila por grupo.

Funciones de ventana calculan agregados u otros cálculos sobre un conjunto de filas, llamado ventana, sin reducir el número de filas devueltas. Cada fila se mantiene, pero se añade el resultado de la función calculado sobre la ventana.

Ejemplo:

SELECT
  employee_id,
  department_id,
  salary,
  AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;

Aquí, para cada fila, se calcula el salario promedio por departamento, pero las filas no se agrupan — vemos todos los empleados con una columna adicional.

A diferencia de GROUP BY, las funciones de ventana permiten analizar datos en el contexto del grupo, sin perder detalles de filas individuales.