Plenowindow functiongroup by

GROUP BY vs Window Functions: quando usar cada um

Publicado em 2025-03-05

Pergunta

Quando você prefere uma window function em vez de um GROUP BY tradicional?

Explicação

GROUP BY colapsa linhas em uma única por grupo. Window functions calculam agregações mantendo cada linha original — fundamental quando você precisa comparar o registro com seu grupo (ex.: % do total, ranking, diferença para a média).

Query SQL

sql
SELECT
  pedido_id,
  valor,
  SUM(valor) OVER (PARTITION BY cliente_id) AS total_cliente,
  valor * 1.0 / SUM(valor) OVER (PARTITION BY cliente_id) AS share_do_pedido
FROM pedidos;

Resposta esperada

Cada pedido com o total gasto pelo cliente e a participação percentual daquele pedido no histórico do cliente.

Erros comuns

  • Tentar reproduzir o resultado com JOIN de subquery agregada — funciona mas é mais lento e verboso
  • Esquecer de qualificar tipos e ter divisão inteira em vez de decimal

Dica de entrevista

Se a resposta precisa preservar a granularidade da linha, use window function.

Compartilhar: