Em que as funções de janela diferem do agrupamento (GROUP BY)?
sobes.tech IA
Resposta da IA
As funções de janela e a agregação (GROUP BY) em SQL servem para diferentes propósitos, embora ambas trabalhem com dados agregados.
GROUP BY combina linhas pelas colunas especificadas e devolve uma linha por cada grupo. Podem ser aplicadas funções agregadas (SUM, COUNT, etc.), mas o resultado é reduzido a uma única linha por grupo.
Funções de janela calculam agregados ou outros cálculos sobre um conjunto de linhas, chamado janela, sem diminuir o número de linhas retornadas. Cada linha é mantida, mas ao seu lado é adicionado o resultado da função calculada sobre a janela.
Exemplo:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Aqui, para cada linha, é calculada a média salarial por departamento, mas as linhas não são agrupadas — vemos todos os funcionários com uma coluna adicional.
Ao contrário do GROUP BY, as funções de janela permitem analisar os dados no contexto do grupo, sem perder detalhes de linhas individuais.