Calcular Totais Acumulados
Neste passo, você aprenderá como calcular totais acumulados (somas cumulativas) usando funções de janela. Totais acumulados são úteis para rastrear a soma de valores ao longo de um período de tempo ou em um conjunto de linhas.
Para calcular totais acumulados, você usa a função SUM() com a cláusula OVER() e uma cláusula ORDER BY para especificar a ordem em que a soma é calculada.
Primeiro, vamos adicionar uma coluna sale_date à tabela sales e preenchê-la com algumas datas de amostra. Execute os seguintes comandos no prompt sqlite>:
ALTER TABLE sales ADD COLUMN sale_date DATE;
UPDATE sales SET sale_date = '2023-01-01' WHERE product_name = 'Laptop';
UPDATE sales SET sale_date = '2023-01-05' WHERE product_name = 'Keyboard';
UPDATE sales SET sale_date = '2023-01-10' WHERE product_name = 'Mouse';
UPDATE sales SET sale_date = '2023-01-15' WHERE product_name = 'Monitor';
UPDATE sales SET sale_date = '2023-01-20' WHERE product_name = 'Headphones';
UPDATE sales SET sale_date = '2023-01-25' WHERE product_name = 'Webcam';
Esses comandos adicionam uma coluna sale_date à tabela sales e atualizam a tabela com datas de amostra para cada produto.
Agora, vamos calcular o total acumulado de sales_amount ao longo do tempo, ordenado por sale_date. Execute a seguinte consulta:
SELECT
sale_date,
product_name,
sales_amount,
SUM(sales_amount) OVER (ORDER BY sale_date) AS running_total
FROM
sales;
Esta consulta calcula o total acumulado de sales_amount ao longo do tempo, ordenado por sale_date.
SUM(sales_amount) OVER (ORDER BY sale_date) calcula a soma cumulativa de sales_amount até cada sale_date.
ORDER BY sale_date especifica que o total acumulado deve ser calculado com base na sale_date em ordem crescente.
Saída Esperada:
2023-01-01|Laptop|1200|1200
2023-01-05|Keyboard|75|1275
2023-01-10|Mouse|25|1300
2023-01-15|Monitor|300|1600
2023-01-20|Headphones|100|1700
2023-01-25|Webcam|50|1750
A coluna running_total mostra a soma cumulativa de sales_amount até cada sale_date. Por exemplo, o total acumulado em '2023-01-15' é 1600, que é a soma das vendas de '2023-01-01', '2023-01-05', '2023-01-10' e '2023-01-15'.