Monitorowanie procentowego wzrostu z tygodnia na tydzień to przydatny sposób śledzenia tygodniowych trendów wzrostu w Twojej firmie. Oto jak obliczyć procentowy wzrost z tygodnia na tydzień w MySQL. Może być używany do obliczania tygodniowych zmian w SQL dla dowolnej metryki.
Jak obliczyć procentowy wzrost z tygodnia na tydzień w MySQL
Oto kroki, aby obliczyć procentowy wzrost z tygodnia na tydzień w MySQL. Załóżmy, że masz tabelę week_sales(week,sale) zawierającą tygodniowe liczby sprzedaży, jak pokazano poniżej.
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 | +------+------+
Możesz obliczyć procentowy wzrost z tygodnia na tydzień, używając następującego zapytania SQL dla procentu wzrostu.
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 | +------+------+-------------+---------------------+
W powyższym zapytaniu dla każdego tygodnia przechowujemy dane z poprzedniego tygodnia w tymczasowej zmiennej o nazwie last_entry i użyj go do obliczenia wzrostu procentowego.
Przeczytaj dodatkowe: Jak obliczyć procent dwóch kolumn w MySQL
Jednak w większości przypadków będziesz mieć dzienne dane sprzedaży zamiast tygodniowej sprzedaży. W takim przypadku musisz najpierw zagregować to do tygodniowej sprzedaży, a następnie użyć powyższego zapytania, aby obliczyć procentowy wzrost z tygodnia na tydzień.
Załóżmy, że masz tabelę dziennych danych sprzedaży sprzedaż(data_zamówienia, sprzedaż)
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 | | ... | ...| +------------+------+
Załóżmy, że chcesz obliczyć procentowy wzrost z tygodnia na tydzień, oto SQL dla zmiany procentowej w czasie.
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 | +------+------+-------------+---------------------+
W powyższym zapytaniu najpierw agregujemy dzienną sprzedaż w tygodniową sprzedaż (pogrubioną czcionką ), a następnie użyj wcześniejszego zapytania, aby obliczyć procentowy wzrost z tygodnia na tydzień.
Przeczytaj dodatkowe: Jak obliczyć procent jednej kolumny w MySQL
Jeśli chcesz filtrować dane użyte w zapytaniu, możesz dodać klauzulę WHERE w zapytaniu, jak pokazano poniżej
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;
Pamiętaj, że obliczanie procentowego wzrostu z tygodnia na tydzień zależy od zapisania wartości poprzedniego wiersza w zmiennej tymczasowej, upewnij się, że Twoja tabela jest już posortowana w porządku rosnącym według numerów tygodni. W przeciwnym razie może to dać złe wyniki.
Po obliczeniu procentowego wzrostu z tygodnia na tydzień możesz użyć narzędzia do tworzenia wykresów, aby wykreślić wynik na wykresie słupkowym i udostępnić go swojemu zespołowi. Oto przykład wykresu słupkowego, który pokazuje procentową zmianę w czasie, utworzonego za pomocą Ubiq.
Jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych MySQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.