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

Jak obliczyć procentowy wzrost miesiąc po miesiącu w MySQL?

Wzrost z miesiąca na miesiąc jest kluczowym wskaźnikiem wydajności dla każdej firmy. Ponieważ w MySQL nie ma funkcji obliczania procentowego wzrostu z miesiąca na miesiąc, musisz napisać zapytanie SQL, aby obliczyć zmianę z miesiąca na miesiąc. Zobaczmy więc, jak obliczyć procentowy wzrost miesiąc po miesiącu w MySQL. Możesz go również użyć do monitorowania zmian procentowych z miesiąca na miesiąc w Twojej firmie.

Jak obliczyć procentowy wzrost miesiąc po miesiącu w MySQL

Załóżmy, że masz tabelę danych month_sales(miesiąc,sprzedaż), która zawiera sprzedaż miesięczną, jak pokazano poniżej.

mysql> create table monthly_sales(month int,sale int);
mysql> insert into monthly_sales(month,sale) values(1,20),
(2,30),(3,25),(4,45),(5,25);
mysql> select * from monthly_sales;
+-------+------+
| month | sale |
+-------+------+
| 1     |   20 |
| 2     |   30 |
| 3     |   25 |
| 4     |   45 |
| 5     |   25 |
+-------+------+

Możesz obliczyć procentowy wzrost z miesiąca na miesiąc za pomocą następującego kodu SQL.

mysql> select month, 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 month, sum(sale) sale
    from   monthly_sales
    group by month) y;
+-------+------+-------------+---------------------+
| month | 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 wiersza(miesiąca), przechowujemy sprzedaż z poprzedniego miesiąca w zmiennej tymczasowej last_entry

Jednak w większości przypadków będziesz mieć dzienne dane sprzedaży. W takim przypadku należy najpierw zagregować go do sprzedaży miesięcznej, a następnie obliczyć procentową stopę wzrostu z miesiąca na miesiąc. Załóżmy, że masz tabelę danych sprzedaż(utworzona_w, sprzedaż), która zawiera dzienne informacje o sprzedaży.

mysql> create table sales(order_date date,sale int);

mysql> insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),
('2020-02-05',20),('2020-02-10',20),('2020-02-06',25),
('2020-03-07',15),('2020-03-08',30),('2020-03-09',20);

mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-02-05 |   20 |
| 2020-02-10 |   20 |
| 2020-02-06 |   25 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
+------------+------+

Załóżmy, że chcesz obliczyć miesięczną stopę wzrostu, oto zapytanie SQL.

mysql> select month, 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 month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales group by month(order_date)) monthly_sales
       group by month) y;		

+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
|     1 |   90 |           0 |                  90 |
|     2 |   65 |      -27.78 |                  65 |
|     3 |   65 |        0.00 |                  65 |
+-------+------+-------------+---------------------+   

W powyższym zapytaniu najpierw agregujemy dzienną sprzedaż w wartości miesięczne (pokazane pogrubioną ), a następnie użyj wcześniejszego zapytania, aby obliczyć procentowy wzrost.

Przeczytaj bonus: Jak obliczyć średnią dzienną sprzedaż w MySQL

Jeśli chcesz filtrować dane przed obliczeniem procentowego wzrostu z miesiąca na miesiąc, możesz to zrobić, dodając klauzulę WHERE do zapytania, jak pokazano poniżej

mysql> select month, 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 month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales 
               WHERE condition
               group by month(order_date)) monthly_sales
       group by month) y;

Przeczytaj bonus: Jak obliczyć całkowitą sprzedaż miesięczną w MySQL?

Uwaga :Ponieważ obliczanie procentowego wzrostu z miesiąca na miesiąc opiera się na koncepcji przechowywania wartości poprzedniego wiersza w zmiennej tymczasowej, upewnij się, że Twoja tabela jest posortowana w porządku rosnącym według miesiąca (np. 1,2,3 itd. lub 202001,20022) ,202003, itd.). W przeciwnym razie Twoje dane mogą zostać posortowane alfabetycznie i dać błędne wyniki podczas obliczania procentowego wzrostu z miesiąca na miesiąc w MySQL.

Możesz użyć narzędzia do raportowania, aby wykreślić te dane na wykresie słupkowym lub pulpicie nawigacyjnym i udostępnić je swojemu zespołowi. Oto przykład wykresu słupkowego, który pokazuje procentowy wzrost sprzedaży z miesiąca na miesiąc, utworzony przy użyciu 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. MySQL Z klauzulą

  2. Ostrzeżenie:mysqli_query():Nie można pobrać mysqli

  3. Instalowanie sterowników MySQL JDBC w narzędziach Pentaho Data Integration i BA Server

  4. Jak ustawić maksymalny czas wykonania zapytania mysql?

  5. SQL:Powtórz wiersz wyniku wiele razy i ponumeruj wiersze