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

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

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

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

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

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

Можете да изчислите процента на растеж седмица през седмица, като използвате следната SQL заявка за процент на растеж.

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

В горната заявка за всяка седмица съхраняваме нейните данни от предходната седмица във временна променлива, наречена last_entry и го използвайте за изчисляване на процентен растеж.

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

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

Да приемем, че имате дневна таблица с данни за продажбите sales(order_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 |
| ...        |   ...|
+------------+------+

Да приемем, че искате да изчислите процентния растеж седмица през седмица, ето SQL за процентна промяна във времето.

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

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

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

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

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;

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

След като изчислите процентния растеж седмица през седмица, можете да използвате инструмент за диаграми, за да начертаете резултата в лента и да го споделите с екипа си. Ето пример за стълбовидна диаграма, която показва процентна промяна във времето, създадена с 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. Как да избягвам специални символи в MySQL?

  2. Без диалектно съпоставяне за тип JDBC:1111

  3. JSON_SET() срещу JSON_INSERT() срещу JSON_REPLACE() в MySQL:Каква е разликата?

  4. Проблем с UTF-8 знаци; това, което виждам, не е това, което съм съхранил

  5. Как да коригирам често срещани проблеми с MySQL база данни?