As funções de janela (Windows Functions), são extremamente poderosas no SQL, permitindo realizar cálculos complexos sem perder a granularidade dos dados. Elas operam sobre um conjunto de linhas (chamado “janela”) e podem fazer cálculos como totais acumulados, médias móveis e rankings, tudo sem precisar agrupar as linhas.

Funções de janela vs. Funções de agregação:

Funções de Janela (OVER()): Realizam cálculos mantendo as linhas individuais e retornam um valor para cada linha, sem agregá-las. Isso permite que você tenha análises detalhadas, como totais acumulados ou classificações, sem perder os dados de cada linha.

Funções de Agregação (GROUP BY): Agrupam as linhas de dados antes de realizar os cálculos, o que significa que você perde as informações detalhadas sobre cada linha e obtém apenas os resultados agregados para cada grupo.

Exemplo prático usando SUM() com função de janela:

Neste exemplo, calculamos o valor acumulado das vendas para cada cliente, mas mantemos os dados de cada pedido individual. A função de janela nos permite calcular o acumulado sem agrupar as linhas.

Explicação da query:

SUM(valor_total) OVER (PARTITION BY id_cliente ORDER BY data_pedido): Calcula o total acumulado das vendas por cliente, ordenando os pedidos por data.

PARTITION BY id_cliente: Cria uma “janela” para cada cliente, permitindo calcular o acumulado separadamente para cada um.

ORDER BY data_pedido: Ordena os pedidos por data para calcular o acumulado corretamente.

Categories:

Comments are closed