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.