Tillväxt från månad till månad är en nyckelindikator för varje företag. Eftersom det inte finns någon funktion för att beräkna procentuell tillväxt månad för månad i MySQL, måste du skriva en SQL-fråga för att beräkna månad över månad förändring. Så låt oss se hur man beräknar procentuell tillväxt månad för månad i MySQL. Du kan också använda den för att övervaka månad för månad procentuell förändring över tid i ditt företag.
Hur man beräknar procentuell tillväxt månad för månad i MySQL
Anta att du har datatabell month_sales(month,rea) som innehåller månadsförsäljning, som visas nedan.
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 | +-------+------+
Du kan beräkna procentuell tillväxt månad för månad med hjälp av följande SQL.
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 | +-------+------+-------------+---------------------+
I ovanstående fråga, för varje rad(månad), lagrar vi försäljningen från föregående månad i en temporär variabel last_entry
Men i de flesta fall har du dagliga försäljningsdata. I så fall måste du först aggregera det till månatlig försäljning och sedan beräkna procentuell tillväxttakt månad för månad. Låt oss säga att du har en datatabell försäljning(skapad_till, försäljning) som innehåller daglig försäljningsinformation.
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 | +------------+------+
Låt oss säga att du vill beräkna månatlig tillväxttakt, här är SQL-frågan för det.
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 | +-------+------+-------------+---------------------+
I ovanstående fråga aggregerar vi först den dagliga försäljningen till månadsvärden (visas i fetstil ) och använd sedan den tidigare frågan för att beräkna procentuell tillväxt.
Bonusläsning: Hur man beräknar genomsnittlig försäljning per dag i MySQL
Om du vill filtrera dina data innan du beräknar procentuell tillväxt månad för månad, kan du göra det genom att lägga till WHERE-klausul i din fråga som visas nedan
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;
Bonus Läs: Hur beräknar man total försäljning per månad i MySQL?
Obs :Eftersom beräkningen av procentuell tillväxt månad för månad baseras på konceptet att lagra föregående rads värde i en temporär variabel, se till att din tabell är sorterad i stigande ordning efter månad (t.ex. 1,2,3,etc eller 202001,202002 ,202003, etc.). Annars kan dina data sorteras alfabetiskt och ge felaktiga resultat när du beräknar procentuell tillväxt månad för månad i MySQL.
Du kan använda ett rapportverktyg för att plotta denna data på ett stapeldiagram eller instrumentpanel och dela den med ditt team. Här är ett exempel på ett stapeldiagram som visar procentuell försäljningstillväxt månad över månad, skapat med Ubiq.
Om du vill skapa diagram, instrumentpaneler och rapporter från MySQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.