Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изчислим процентния растеж месец по месец в MySQL

Месечният растеж е ключов показател за ефективността на всеки бизнес. Тъй като няма функция за изчисляване на процентен растеж месец по месец в MySQL, трябва да напишете SQL заявка, за да изчислите промяната от месец по месец. Така че нека видим как да изчислим процентния растеж месец по месец в MySQL. Можете също така да го използвате, за да наблюдавате процентната промяна от месец след месец във вашия бизнес.

Как да изчислим процентния растеж месец по месец в MySQL

Да приемем, че имате таблица с данни month_sales(month,sale), която съдържа месечни продажби, както е показано по-долу.

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

Можете да изчислите процентния растеж месец по месец, като използвате следния 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 |
+-------+------+-------------+---------------------+

В горната заявка за всеки ред (месец) съхраняваме продажбата от предходния месец във временна променлива last_entry

Въпреки това, в повечето случаи ще имате ежедневни данни за продажбите. В този случай първо трябва да го обобщите към месечните продажби и след това да изчислите процентния темп на растеж месец по месец. Да приемем, че имате таблица с данни за продажби (created_at, sale), която съдържа информация за ежедневните продажби.

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

Да приемем, че искате да изчислите месечния темп на растеж, ето 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   (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 |
+-------+------+-------------+---------------------+   

В горната заявка първо обобщаваме дневните продажби в месечни стойности (показани удебелен ) и след това използвайте по-ранната заявка, за да изчислите процентен растеж.

Бонус за четене: Как да изчислим средните продажби на ден в MySQL

Ако искате да филтрирате данните си, преди да изчислите процентния растеж месец по месец, можете да направите това, като добавите клауза WHERE към заявката си, както е показано по-долу

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;

Бонус четене: Как да изчислим общите продажби на месец в MySQL?

Моля, обърнете внимание :Тъй като изчисляването на процентния растеж месец по месец се основава на концепцията за съхраняване на стойността на предишния ред във временна променлива, уверете се, че вашата таблица е сортирана във възходящ ред на месеца (например 1,2,3 и т.н. или 202001,202002 ,202003 и др.). В противен случай данните ви може да се сортират по азбучен ред и да дадат грешни резултати, когато изчислявате процентния растеж месец по месец в MySQL.

Можете да използвате инструмент за отчитане, за да начертаете тези данни на лента или табло за управление и да ги споделите с вашия екип. Ето пример за лентова диаграма, която показва процентен ръст на продажбите от месец на месец, създадена с Ubiq.

Ако искате да създавате диаграми, табла за управление и отчети от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхраняване на изображение в blob база данни; извличане от db в Picturebox

  2. MySQL тригер при събития за вмъкване/актуализация

  3. SQL SERVER – Един трик за боравене с динамичен SQL за избягване на атака с инжектиране на SQL?

  4. Нарушение на ограничението за целостта:1452 Не може да се добави или актуализира дъщерен ред:

  5. Производителност на UUID в MySQL?