O MySQL não possui uma função para calcular o total cumulativo, também conhecido como total em execução. Você precisa escrever uma consulta SQL para calcular a soma cumulativa no MySQL. Então, vamos dar uma olhada em uma consulta SQL para calcular o total de execução no MySQL.
Como calcular o total de execução no MySQL
Veja como calcular o total de execução no MySQL. Digamos que você tenha a tabela a seguir que contém as vendas diárias.
mysql> create table sales(order_date date,sale int);
mysql> insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),('2020-01-05',20);
mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 | 20 |
| 2020-01-02 | 25 |
| 2020-01-03 | 15 |
| 2020-01-04 | 30 |
| 2020-01-05 | 20 |
+------------+------+
Digamos que você queira calcular o total de corrida, para esta tabela, assim.
+------------+------+-----------------+ | order_date | sale | cumulative_sale | +------------+------+-----------------+ | 2020-01-01 | 20 | 20 | | 2020-01-02 | 25 | 45 | | 2020-01-03 | 15 | 60 | | 2020-01-04 | 30 | 90 | | 2020-01-05 | 20 | 110 | +------------+------+-----------------+
Bônus de leitura: Como concatenar várias linhas em um campo no MySQL
Aqui está a consulta SQL para calcular o total de execução no MySQL.
mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
from sales
order by order_date;
+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 | 20 | 20 |
| 2020-01-02 | 25 | 45 |
| 2020-01-03 | 15 | 60 |
| 2020-01-04 | 30 | 90 |
| 2020-01-05 | 20 | 110 |
+------------+------+-----------------+
Na consulta acima, primeiro definimos uma variável definida pelo usuário csum como 0. A usamos para armazenar o total de execução de cada linha. É importante observar que csum não é armazenado em nenhuma tabela. Ele é usado simplesmente para exibir os valores totais em execução.
Se você quiser armazenar esse total em execução, poderá adicionar uma nova coluna à sua tabela e usar a cláusula UPDATE para armazenar os valores totais em execução.
mysql> alter table sales add column cumulative_sum int;
mysql> set @csum := 0;
mysql> update sales
set cumulative_sum = (@csum := @csum + sale)
order by order_date;
mysql> select order_date,sale,cumulative_sum from sales;
+------------+------+----------------+
| order_date | sale | cumulative_sum |
+------------+------+----------------+
| 2020-01-01 | 20 | 20 |
| 2020-01-02 | 25 | 45 |
| 2020-01-03 | 15 | 60 |
| 2020-01-04 | 30 | 90 |
| 2020-01-05 | 20 | 110 |
+------------+------+----------------+
Bônus de leitura: Como adicionar linha total no MySQL
Você também pode personalizar sua consulta SQL usando a cláusula WHERE ou JOINS, conforme mostrado,
mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
from sales where <condition>
order by order_date;
Como o MySQL não oferece nenhuma função integrada para executar o total, você pode usar a consulta SQL acima para executar o total no MySQL. Você também pode usar MONTH(order_date) em vez de order_date acima se você quiser escrever SQL para soma cumulativa por mês.
Depois de calcular o total acumulado, você pode usar uma ferramenta de gráficos para plotar esses dados em um gráfico de linhas e compartilhá-los com sua equipe. Aqui está um exemplo de um gráfico de linhas que mostra o total em execução, criado usando o Ubiq.
Se você deseja criar gráficos, painéis e relatórios do banco de dados MySQL, experimente o Ubiq. Oferecemos um teste gratuito de 14 dias.