Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć procentowy wzrost z tygodnia na tydzień w MySQL?

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skuteczne monitorowanie MySQL za pomocą pulpitów nawigacyjnych SCUMM:część pierwsza

  2. Modelowanie wariantów produktów

  3. Funkcja MySQL ATAN() — zwraca łuk tangensa wartości (lub wartości)

  4. Logiczne kopie zapasowe baz danych przy użyciu powłoki MySQL

  5. Jak sprawdzić, czy wartość jest liczbą całkowitą w MySQL?