Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So berechnen Sie das prozentuale Wachstum Monat für Monat in MySQL

Monatliches Wachstum ist ein wichtiger Leistungsindikator für jedes Unternehmen. Da es in MySQL keine Funktion gibt, um das prozentuale Wachstum von Monat zu Monat zu berechnen, müssen Sie eine SQL-Abfrage schreiben, um die Veränderung von Monat zu Monat zu berechnen. Sehen wir uns also an, wie man das prozentuale Wachstum Monat für Monat in MySQL berechnet. Sie können es auch verwenden, um die prozentuale Veränderung in Ihrem Unternehmen Monat für Monat im Laufe der Zeit zu überwachen.

Wie man das prozentuale Wachstum Monat für Monat in MySQL berechnet

Angenommen, Sie haben eine Datentabelle month_sales(month,sale), die die monatlichen Verkäufe enthält, wie unten gezeigt.

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

Mit der folgenden SQL können Sie das prozentuale Wachstum Monat für Monat berechnen.

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

In der obigen Abfrage speichern wir für jede Zeile (Monat) den Verkauf des vorherigen Monats in einer temporären Variablen last_entry

In den meisten Fällen haben Sie jedoch tägliche Verkaufsdaten. In diesem Fall müssen Sie es zuerst zu monatlichen Verkäufen aggregieren und dann die prozentuale Wachstumsrate Monat für Monat berechnen. Angenommen, Sie haben eine Datentabelle sales(created_at, sale), die tägliche Verkaufsinformationen enthält.

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

Angenommen, Sie möchten die monatliche Wachstumsrate berechnen, hier ist die SQL-Abfrage dafür.

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

In der obigen Abfrage aggregieren wir zunächst die täglichen Umsätze zu monatlichen Werten (fett dargestellt). ) und verwenden Sie dann die frühere Abfrage, um das prozentuale Wachstum zu berechnen.

Bonuslektüre: So berechnen Sie den durchschnittlichen Umsatz pro Tag in MySQL

Wenn Sie Ihre Daten filtern möchten, bevor Sie das monatliche prozentuale Wachstum berechnen, können Sie dies tun, indem Sie Ihrer Abfrage eine WHERE-Klausel hinzufügen, wie unten gezeigt

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;

Bonuslektüre: Wie berechnet man den Gesamtumsatz pro Monat in MySQL?

Bitte beachten :Da die Berechnung des prozentualen Wachstums von Monat zu Monat auf dem Konzept basiert, den Wert der vorherigen Zeile in einer temporären Variablen zu speichern, stellen Sie sicher, dass Ihre Tabelle in aufsteigender Reihenfolge des Monats sortiert ist (z. B. 1,2,3 usw. oder 202001,202002 ,202003 usw.). Andernfalls könnten Ihre Daten alphabetisch sortiert werden und falsche Ergebnisse liefern, wenn Sie das prozentuale Wachstum Monat für Monat in MySQL berechnen.

Sie können ein Berichtstool verwenden, um diese Daten in einem Balkendiagramm oder Dashboard darzustellen und sie mit Ihrem Team zu teilen. Hier ist ein Beispiel für ein Balkendiagramm, das das prozentuale Umsatzwachstum von Monat zu Monat zeigt, das mit Ubiq erstellt wurde.

Wenn Sie Diagramme, Dashboards und Berichte aus einer MySQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.