Sobes.tech
Middle

Qual é a diferença entre uma função de janela e uma função de agregação em SQL?

sobes.tech IA

Resposta da IA

A função de agregação em SQL (por exemplo, SUM, AVG, COUNT) calcula um valor final para um grupo de linhas e retorna uma única linha por grupo. Por exemplo, SUM(salary) calculará a soma dos salários em todo o grupo.

A função de janela (window function) também trabalha com grupos de linhas, mas retorna um resultado para cada linha, considerando o contexto da janela (conjunto de linhas ao redor da linha atual). Por exemplo, SUM(salary) OVER (PARTITION BY department) retornará a soma dos salários por departamento para cada linha, sem reduzir o resultado a uma única linha.

Exemplo:

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

Aqui, para cada linha, será exibida a soma dos salários no departamento, em vez de uma única linha por departamento, como acontece com a função de agregação com GROUP BY.