Sobes.tech
Middle

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.