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