Soma Cumulativa SQL

Soma Cumulativa Sql



Em SQL, uma soma cumulativa refere-se a um método que nos permite calcular o total acumulado de uma coluna numérica em uma tabela de banco de dados. Uma soma cumulativa entra em jogo em uma ampla variedade de cenários, como acompanhar o progresso ou calcular as médias móveis de um determinado valor.

Neste tutorial, aprenderemos como implementar e utilizar a soma cumulativa em SQL usando vários métodos e técnicas.







Dados de amostra

Para entender melhor como podemos implementar e usar a soma cumulativa, vamos começar montando uma tabela básica com dados de amostra. Isso nos permite demonstrar o funcionamento de todos os métodos de forma rápida e eficiente neste post.



Comece criando uma tabela básica que armazene as informações do produto.



CRIAR TABELA produtos (
product_id INT CHAVE PRIMÁRIA,
nome_do_produto VARCHAR ( 255 ) ,
preço DECIMAL ( 10 , 2 )
) ;





Isso deve criar uma nova tabela chamada “produtos” que armazena o ID do produto, o nome do produto e o preço de cada produto.

Podemos então prosseguir para adicionar dados de amostra, conforme mostrado nos exemplos de instruções de inserção a seguir:



INSERIR EM produtos ( id_do_produto, nome_do_produto, preço )
VALORES
( 1 , 'Código do Estúdio Visual' , 10h00 ) ,
( 2 , 'Texto Sublime' , 80,00 ) ,
( 3 , 'PyCharm Profissional' , 199,00 ) ,
( 4 , 'IDE do Eclipse' , 30h00 ) ,
( 5 , 'IntelliJ IDEA Ultimate' , 699,00 ) ,
( 6 , 'Área de trabalho do GitHub' , 20h00 ) ,
( 7 , 'Espere Software' , 10h00 ) ,
( 8 , 'Xcódigo' , 660,00 ) ,
( 9 , 'NetBeans' , 0,00 ) ,
( 10 , 'Átomo' , 60,00 ) ;

NOTA: Os dados fornecidos são inteiramente fictícios. Não representa o preço real de nenhum dos itens listados.

A tabela resultante é a seguinte:

Soma cumulativa SQL (auto-junção)

Uma das técnicas que podemos usar para realizar uma soma cumulativa em uma determinada coluna é usar o método de auto-junção. Uma vantagem desse método é que ele funciona em quase todos os bancos de dados SQL, mesmo aqueles que não suportam as funções do Windows.

Tomemos por exemplo a tabela anterior de “produtos”. Podemos criar a soma cumulativa da coluna de preço conforme demonstrado na consulta a seguir:

SELECIONAR
p1.id_do_produto,
p1.nome_do_produto,
p1.preço,
SOMA ( p2.preço ) AS soma_cumulativa
DE
produtos p1
JUNTAR
produtos p2
SOBRE
p1.produto_id > = p2.id_do_produto
Agrupar por
p1.id_do_produto,
p1.nome_do_produto,
p1.preço
ORDENAR POR
p1.id_do_produto;

Você notou o funcionamento da consulta? Caso contrário, fique conosco enquanto explicamos passo a passo.

No exemplo de consulta fornecido, começamos criando dois aliases – “p1” e “p2” – para a tabela “produtos” que nos permite realizar uma auto-junção.

Em seguida, procedemos à junção de “p1” e “p2” com a condição de que o “product_id” de “p1” seja maior ou igual ao “product_id” de “p2”.

Na próxima etapa, chamamos a função sum() que basicamente calcula a soma acumulada dos preços de cada linha.

Por último, agrupamos os resultados usando “product_id”, “product_name” e “price” e ordenamos os resultados.

Após esta operação, devemos ter uma soma cumulativa para cada registro conforme demonstrado na tabela resultante conforme mostrado a seguir:

Como você pode ver, obtemos a soma total de todas as linhas anteriores. A última linha deve conter a soma total de todas as linhas anteriores.

Soma cumulativa SQL (funções de janela)

Uma forma mais eficiente e prática de calcular a soma cumulativa em SQL é aproveitar as vantagens das funções de janela sempre que houver suporte.

Se você tiver um banco de dados como SQL Server, PostgreSQL ou MySQL versão 8.0 e superior, este é o método mais útil e recomendado para determinar a soma cumulativa de uma determinada coluna.

Dê uma olhada no exemplo demonstrado a seguir:

SELECIONAR
ID do produto,
Nome do Produto,
preço,
SOMA ( preço ) SOBRE ( PEDIR POR product_id ) AS soma_cumulativa
DE
produtos;

Neste caso, começamos selecionando as colunas “product_id”, “product_name” e “price” da tabela “products”.

Em seguida, usamos a função SUM() como uma função de janela usando a cláusula OVER.

Na cláusula OVER, especificamos a cláusula ORDER BY que define a ordem em que a soma cumulativa é calculada.

Isso deve retornar uma saída semelhante à mostrada a seguir:

Você notará que usar as funções de janela é mais coerente, eficiente e legível em comparação com o uso de auto-junções.

Conclusão

Neste tutorial, aprendemos tudo sobre somas cumulativas em SQL. Também abordamos como usar auto-junções e funções de janela para realizar a soma cumulativa em SQL.