Sledování procentuálního růstu týden po týdnu je užitečný způsob, jak sledovat týdenní růstové trendy ve vaší firmě. Zde je návod, jak vypočítat procentuální růst týden po týdnu v MySQL. Lze jej použít k výpočtu týdenní změny v SQL pro jakoukoli metriku.
Jak vypočítat procento růstu týden po týdnu v MySQL
Zde jsou kroky k výpočtu procentuálního růstu týden po týdnu v MySQL. Řekněme, že máte tabulku weekly_sales(week,sale), která obsahuje týdenní čísla prodejů, jak je uvedeno níže.
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 | +------+------+
Procento růstu z týdne na týden můžete vypočítat pomocí následujícího SQL dotazu na procento růstu.
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 | +------+------+-------------+---------------------+
Ve výše uvedeném dotazu ukládáme pro každý týden data z předchozího týdne do dočasné proměnné nazvané last_entry a použijte jej k výpočtu procentuálního růstu.
Bonusové čtení: Jak vypočítat procento dvou sloupců v MySQL
Ve většině případů však budete mít k dispozici denní údaje o prodeji namísto týdenních prodejů. V takovém případě je tedy musíte nejprve agregovat do týdenních prodejů a poté pomocí výše uvedeného dotazu vypočítat procentuální růst týden po týdnu.
Řekněme, že máte tabulku denních údajů o prodeji 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 | | ... | ...| +------------+------+
Řekněme, že chcete vypočítat procentuální růst týden po týdnu, zde je SQL pro procentuální změnu v čase.
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 | +------+------+-------------+---------------------+
Ve výše uvedeném dotazu nejprve agregujeme denní prodeje do týdenních prodejů (tučně )a pak pomocí předchozího dotazu vypočítat procentuální růst týden po týdnu.
Bonusové čtení: Jak vypočítat procento jednoho sloupce v MySQL
Pokud chcete filtrovat data použitá pro váš dotaz, můžete do dotazu přidat klauzuli WHERE, jak je uvedeno níže
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;
Vezměte prosím na vědomí, že výpočet procentuálního růstu týden po týdnu závisí na uložení hodnoty předchozího řádku do dočasné proměnné, ujistěte se prosím, že vaše tabulka je již seřazena vzestupně podle čísel týdnů. Jinak by to mohlo dát špatné výsledky.
Poté, co vypočítáte procentuální růst týden po týdnu, můžete použít nástroj pro vytváření grafů k vykreslení výsledku do sloupcového grafu a sdílet jej se svým týmem. Zde je příklad sloupcového grafu, který ukazuje procentuální změnu v průběhu času, vytvořený pomocí Ubiq.
Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze MySQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.