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

Comment calculer le pourcentage de croissance mois par mois dans MySQL

La croissance mensuelle est un indicateur de performance clé pour chaque entreprise. Puisqu'il n'y a pas de fonction pour calculer le pourcentage de croissance mois par mois dans MySQL, vous devez écrire une requête SQL pour calculer le changement d'un mois à l'autre. Voyons donc comment calculer le pourcentage de croissance mois par mois dans MySQL. Vous pouvez également l'utiliser pour surveiller la variation en pourcentage d'un mois sur l'autre au fil du temps dans votre entreprise.

Comment calculer le pourcentage de croissance mois par mois dans MySQL

Supposons que vous disposiez d'une table de données month_sales(month,sale) contenant les ventes mensuelles, comme indiqué ci-dessous.

mysql> create table monthly_sales(month int,sale int);
mysql> insert into monthly_sales(month,sale) values(1,20),
(2,30),(3,25),(4,45),(5,25);
mysql> select * from monthly_sales;
+-------+------+
| month | sale |
+-------+------+
| 1     |   20 |
| 2     |   30 |
| 3     |   25 |
| 4     |   45 |
| 5     |   25 |
+-------+------+

Vous pouvez calculer le pourcentage de croissance mois par mois en utilisant le SQL suivant.

mysql> select month, sale,
    if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
    @last_entry := sale
    from
    (select @last_entry := 0) x,
    (select month, sum(sale) sale
    from   monthly_sales
    group by month) y;
+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
| 1     |   20 |           0 |                  20 |
| 2     |   30 |       50.00 |                  30 |
| 3     |   25 |      -16.67 |                  25 |
| 4     |   45 |       80.00 |                  45 |
| 5     |   25 |      -44.44 |                  25 |
+-------+------+-------------+---------------------+

Dans la requête ci-dessus, pour chaque ligne (mois), nous stockons la vente du mois précédent dans une variable temporaire last_entry

Cependant, dans la plupart des cas, vous aurez des données de ventes quotidiennes. Dans ce cas, vous devez d'abord l'agréger aux ventes mensuelles, puis calculer le taux de croissance en pourcentage mois par mois. Supposons que vous disposiez d'une table de données sales(created_at, sale) contenant des informations sur 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-02-05',20),('2020-02-10',20),('2020-02-06',25),
('2020-03-07',15),('2020-03-08',30),('2020-03-09',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-02-05 |   20 |
| 2020-02-10 |   20 |
| 2020-02-06 |   25 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
+------------+------+

Supposons que vous souhaitiez calculer le taux de croissance mensuel, voici la requête SQL correspondante.

mysql> select month, sale, 
       if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
       @last_entry := sale                  
from
      (select @last_entry := 0) x,
      (select month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales group by month(order_date)) monthly_sales
       group by month) y;		

+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
|     1 |   90 |           0 |                  90 |
|     2 |   65 |      -27.78 |                  65 |
|     3 |   65 |        0.00 |                  65 |
+-------+------+-------------+---------------------+   

Dans la requête ci-dessus, nous regroupons d'abord les ventes quotidiennes en valeurs mensuelles (affichées en gras ), puis utilisez la requête précédente pour calculer le pourcentage de croissance.

Lecture bonus : Comment calculer les ventes moyennes par jour dans MySQL

Si vous souhaitez filtrer vos données avant de calculer le pourcentage de croissance mois par mois, vous pouvez le faire en ajoutant la clause WHERE à votre requête, comme indiqué ci-dessous

mysql> select month, sale, 
       if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
       @last_entry := sale                  
from
      (select @last_entry := 0) x,
      (select month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales 
               WHERE condition
               group by month(order_date)) monthly_sales
       group by month) y;

Lecture bonus : Comment calculer le total des ventes par mois dans MySQL ?

Veuillez noter :Étant donné que le calcul du pourcentage de croissance mois par mois est basé sur le concept de stockage de la valeur de la ligne précédente dans une variable temporaire, assurez-vous que votre tableau est trié par ordre croissant de mois (par exemple 1,2,3,etc ou 202001,202002 ,202003, etc). Sinon, vos données pourraient être triées par ordre alphabétique et donner des résultats erronés lorsque vous calculez le pourcentage de croissance mois par mois dans MySQL.

Vous pouvez utiliser un outil de création de rapports pour tracer ces données sur un graphique à barres ou un tableau de bord et les partager avec votre équipe. Voici un exemple de graphique à barres qui montre la croissance des ventes en pourcentage d'un mois sur l'autre, 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.