sql >> Database teknologi >  >> RDS >> Mysql

Sådan beregner du vækst i procent uge over uge i MySQL

Overvågning af vækst i procent uge-over-uge er en nyttig måde at spore ugentlige væksttendenser i din virksomhed. Sådan beregner du vækst i procent uge over uge i MySQL. Den kan bruges til at beregne uge over uge ændring i SQL for enhver metrik.

Sådan beregner du vækst i procent uge over uge i MySQL

Her er trinene til at beregne procentvis vækst uge over uge i MySQL. Lad os sige, at du har en tabel weekly_sales(week,sale), der indeholder ugentlige salgstal, som vist nedenfor.

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

Du kan beregne vækstprocent uge over uge ved at bruge følgende SQL-forespørgsel for vækstprocent.

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

I ovenstående forespørgsel gemmer vi for hver uge dens forrige uges data i en midlertidig variabel kaldet last_entry og brug det til at beregne procentvis vækst.

Bonuslæsning: Sådan beregnes procentdelen af ​​to kolonner i MySQL

I de fleste tilfælde vil du dog have daglige salgsdata i stedet for ugentlige salg. Så i så fald skal du først aggregere det til ugentlige salg og derefter bruge ovenstående forespørgsel til at beregne vækst i procent uge over uge.

Lad os sige, at du har en daglig salgsdatatabel salg(ordre_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 |
| ...        |   ...|
+------------+------+

Lad os sige, at du vil beregne procentvis vækst uge over uge, her er SQL for procentvis ændring over tid.

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

I ovenstående forespørgsel samler vi først dagligt salg til ugentligt salg (med fed skrift). )og brug derefter den tidligere forespørgsel til at beregne procentvis vækst uge over uge.

Bonuslæsning: Sådan beregnes procentdelen af ​​én kolonne i MySQL

Hvis du vil filtrere de data, der bruges til din forespørgsel, kan du tilføje en WHERE-klausul i din forespørgsel som vist nedenfor

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;

Bemærk venligst, da beregningen af ​​procentvis vækst uge over uge afhænger af lagring af forrige rækkes værdi i en midlertidig variabel, skal du sørge for, at din tabel allerede er sorteret i stigende rækkefølge af ugenumre. Ellers kan det give forkerte resultater.

Når du har beregnet procentvis vækst uge over uge, kan du bruge et diagramværktøj til at plotte resultatet i et søjlediagram og dele det med dit team. Her er et eksempel på søjlediagram, der viser procentvis ændring over tid, oprettet ved hjælp af Ubiq.

Hvis du vil oprette diagrammer, dashboards og rapporter fra MySQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.

  1. Ændre brugerdefineret type i SQL Server

  2. Brug af Easysoft ODBC-drivere med Informatica PowerCenter

  3. OVERSÆTT(… BRUGER) Funktion i Oracle

  4. Sådan omdannes en database i MySQL Workbench