Menu
Coddy logo textTech

Total Acumulado

Parte da seção Além do Básico do Journey de SQL da Coddy — lição 25 de 27.

Um total acumulado (cumulativo) é o SUM sobre uma janela com ORDER BY: isso transforma a agregação em uma que cresce linha a linha.

SELECT day, amount,
       SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenue

Sem ORDER BY a janela abrange todas as linhas e você obteria o total geral em cada linha. Com ele, a janela se expande uma linha por vez nessa ordem, então cada linha vê apenas a si mesma e tudo o que vem antes dela.

Adicione um PARTITION BY para redefinir o total acumulado por grupo, por exemplo, o total acumulado de receita por região, dia a dia.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>revenue</strong>: <strong>region</strong>, <strong>day</strong>, <strong>amount</strong>

Retorne region, day, amount e region_running_total: o amount acumulado para aquele region até este dia, inclusive. O total acumulado deve ser reiniciado para cada região.

Use PARTITION BY na janela. Ordene por region, depois por day.

Folha de consulta

Um total acumulado usa SUM com ORDER BY na janela — a janela se expande linha por linha nessa ordem:

SELECT day, amount,
       SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenue

Adicione PARTITION BY para reiniciar o total acumulado por grupo:

SELECT region, day, amount,
       SUM(amount) OVER (PARTITION BY region ORDER BY day) AS region_running_total
FROM revenue
ORDER BY region, day

Experimente você mesmo

SELECT region, day, amount,
       -- SUM(amount) OVER (PARTITION BY region ORDER BY day)
FROM revenue
ORDER BY region, day
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Além do Básico