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.