Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment calculer le total cumulé dans MySQL

MySQL n'a pas de fonction pour calculer le total cumulé, également appelé total cumulé. Vous devez écrire une requête SQL pour calculer la somme cumulée dans MySQL. Regardons donc une requête SQL pour calculer le total cumulé dans MySQL.

Comment calculer le total cumulé dans MySQL

Voici comment calculer le total cumulé dans MySQL. Disons que vous avez le tableau suivant qui contient les ventes quotidiennes.

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 |
+------------+------+

Supposons que vous souhaitiez calculer le total cumulé, pour ce tableau, comme ceci.

+------------+------+-----------------+
| 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 |
+------------+------+-----------------+

Lecture bonus : Comment concaténer plusieurs lignes dans un seul champ dans MySQL

Voici la requête SQL pour calculer le total cumulé dans 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 |
+------------+------+-----------------+

Dans la requête ci-dessus, nous définissons d'abord une variable définie par l'utilisateur csum sur 0. Nous l'utilisons ensuite pour stocker le total cumulé de chaque ligne. Il est important de noter que csum n'est stocké dans aucune table. Il est simplement utilisé pour afficher les valeurs totales cumulées.

Si vous souhaitez stocker ce total cumulé, vous pouvez ajouter une nouvelle colonne à votre table et utiliser la clause UPDATE pour stocker les valeurs du total cumulé.

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 |
+------------+------+----------------+

Lecture bonus : Comment ajouter une ligne totale dans MySQL

Vous pouvez également personnaliser votre requête SQL en utilisant la clause WHERE ou JOINS, comme indiqué,

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;


Étant donné que MySQL n'offre aucune fonction intégrée pour le total cumulé, vous pouvez utiliser la requête SQL ci-dessus pour le total cumulé dans MySQL. Vous pouvez également utiliser MONTH(order_date) au lieu de date_commande ci-dessus si vous voulez écrire du SQL pour une somme cumulée par mois.

Une fois que vous avez calculé le total cumulé, vous pouvez utiliser un outil graphique pour tracer ces données dans un graphique linéaire et les partager avec votre équipe. Voici un exemple de graphique linéaire qui affiche le total cumulé, créé à l'aide d'Ubiq.

Si vous souhaitez créer des graphiques, des tableaux de bord et des rapports à partir de la base de données MySQL, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.