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

Comment calculer le pourcentage de croissance semaine après semaine dans MySQL

Surveillance du pourcentage de croissance d'une semaine à l'autre est un moyen utile de suivre les tendances de croissance hebdomadaires de votre entreprise. Voici comment calculer le pourcentage de croissance semaine après semaine dans MySQL. Il peut être utilisé pour calculer le changement d'une semaine à l'autre dans SQL pour n'importe quelle métrique.

Comment calculer le pourcentage de croissance d'une semaine sur l'autre dans MySQL

Voici les étapes pour calculer le pourcentage de croissance semaine après semaine dans MySQL. Supposons que vous disposiez d'une table Weekly_sales(week,sale) contenant les chiffres des ventes hebdomadaires, comme indiqué ci-dessous.

mysql> create table weekly_sales(week int, sale int);

mysql> insert into weekly_sales(week,sale) 
       values(1,20),(2,30),(3,25),(4,45),(5,25);

mysql> select * from weekly_sales;
+------+------+
| week | sale |
+------+------+
|    1 |   20 |
|    2 |   30 |
|    3 |   25 |
|    4 |   45 |
|    5 |   25 |
+------+------+

Vous pouvez calculer le pourcentage de croissance semaine après semaine à l'aide de la requête SQL suivante pour le pourcentage de croissance.

mysql> select week, 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 week, sum(sale) sale
         from   weekly_sales
         group by week) y;
+------+------+-------------+---------------------+
| week | 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 semaine, nous stockons les données de la semaine précédente dans une variable temporaire appelée last_entry et utilisez-le pour calculer le pourcentage de croissance.

Lecture bonus : Comment calculer le pourcentage de deux colonnes dans MySQL

Cependant, dans la plupart des cas, vous aurez des données de ventes quotidiennes au lieu de ventes hebdomadaires. Donc, dans ce cas, vous devez d'abord l'agréger aux ventes hebdomadaires, puis utiliser la requête ci-dessus pour calculer le pourcentage de croissance d'une semaine à l'autre.

Supposons que vous disposiez d'un tableau de données sur les ventes quotidiennes sales(order_date, sale)

mysql>create table sales(order_date date,sale int);

mysql>insert into sales(order_date,sale)
values('2020-01-01',10),('2020-01-02',12),('2020-01-03',15),
('2020-01-04',11),('2020-01-05',13),('2020-01-06',9),
('2020-01-07',21),('2020-01-08',10),('2020-01-09',10),
('2020-01-10',2),('2020-01-11',16),('2020-01-12',12),
('2020-01-13',10),('2020-01-14',18),('2020-01-15',15),
('2020-01-16',12),('2020-01-17',10),('2020-01-18',18),
('2020-01-19',14),('2020-01-20',16),('2020-01-21',12),
('2020-01-22',21),('2020-01-23',13),('2020-01-24',15),
('2020-01-25',20),('2020-01-26',14),('2020-01-27',16),
('2020-01-28',15),('2020-01-29',10),('2020-01-30',18);

mysql>select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   10 |
| 2020-01-02 |   12 |
| 2020-01-03 |   15 |
| 2020-01-04 |   11 |
| 2020-01-05 |   13 |
| 2020-01-06 |    9 |
| 2020-01-07 |   21 |
| 2020-01-08 |   10 |
| 2020-01-09 |   10 |
| ...        |   ...|
+------------+------+

Supposons que vous souhaitiez calculer le pourcentage de croissance d'une semaine à l'autre, voici le SQL pour le pourcentage de variation dans le temps.

mysql> select week, 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 week, sum(sale) sale
            from   (select week(order_date) as week,sum(sale) as sale
                    from sales group by week(order_date)) weekly_sales
            group by week) y;
+------+------+-------------+---------------------+
| week | sale | growth rate | @last_entry := sale |
+------+------+-------------+---------------------+
|    0 |   48 |           0 |                  48 |
|    1 |   81 |       68.75 |                  81 |
|    2 |   95 |       17.28 |                  95 |
|    3 |  111 |       16.84 |                 111 |
|    4 |   73 |      -34.23 |                  73 |
+------+------+-------------+---------------------+

Dans la requête ci-dessus, nous regroupons d'abord les ventes quotidiennes en ventes hebdomadaires (en gras ), puis utilisez la requête précédente pour calculer le pourcentage de croissance d'une semaine à l'autre.

Lecture bonus : Comment calculer le pourcentage d'une colonne dans MySQL

Si vous souhaitez filtrer les données utilisées pour votre requête, vous pouvez ajouter une clause WHERE dans votre requête comme indiqué ci-dessous

mysql> select week, 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 week, sum(sale) sale
            from   (select week(order_date) as week,sum(sale) as sale
                    from sales 
                    WHERE condition
                    group by week(order_date)) weekly_sales
            group by week) y;

Veuillez noter que, puisque le calcul du pourcentage de croissance d'une semaine à l'autre dépend du stockage de la valeur de la ligne précédente dans une variable temporaire, assurez-vous que votre tableau est déjà trié par ordre croissant des numéros de semaine. Sinon, cela pourrait donner des résultats erronés.

Après avoir calculé le pourcentage de croissance d'une semaine à l'autre, vous pouvez utiliser un outil graphique pour tracer le résultat dans un graphique à barres et le partager avec votre équipe. Voici un exemple de graphique à barres qui montre la variation en pourcentage au fil du temps, 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.