Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tính phần trăm tăng trưởng theo tháng trong MySQL

Tăng trưởng hàng tháng là một chỉ số hoạt động quan trọng đối với mọi doanh nghiệp. Vì không có chức năng tính toán phần trăm tăng trưởng hàng tháng trong MySQL, bạn cần viết một truy vấn SQL để tính toán sự thay đổi hàng tháng. Vì vậy, hãy xem cách tính toán phần trăm tăng trưởng từng tháng trong MySQL. Bạn cũng có thể sử dụng nó để theo dõi sự thay đổi phần trăm hàng tháng theo thời gian trong doanh nghiệp của bạn.

Cách tính phần trăm tăng trưởng theo tháng trong MySQL

Giả sử bạn có bảng dữ liệu month_sales (tháng, doanh số bán hàng) chứa doanh số hàng tháng, như được hiển thị bên dưới.

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 |
+-------+------+

Bạn có thể tính toán phần trăm tăng trưởng từng tháng bằng cách sử dụng SQL sau.

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 |
+-------+------+-------------+---------------------+

Trong truy vấn trên, đối với mỗi hàng (tháng), chúng tôi lưu trữ doanh thu của tháng trước trong một biến tạm thời last_entry

Tuy nhiên, trong hầu hết các trường hợp, bạn sẽ có dữ liệu bán hàng hàng ngày. Trong trường hợp đó, trước tiên bạn cần phải tổng hợp nó vào doanh số bán hàng hàng tháng, sau đó tính toán tỷ lệ phần trăm tăng trưởng hàng tháng. Giả sử bạn có một bảng dữ liệu bán hàng (tạo_tạo_tạo, bán hàng) có chứa thông tin bán hàng hàng ngà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 |
+------------+------+

Giả sử bạn muốn tính toán tốc độ tăng trưởng hàng tháng, đây là truy vấn SQL cho nó.

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 |
+-------+------+-------------+---------------------+   

Trong truy vấn trên, trước tiên, chúng tôi tổng hợp doanh số bán hàng hàng ngày thành các giá trị hàng tháng (được hiển thị bằng in đậm ) và sau đó sử dụng truy vấn trước đó để tính toán phần trăm tăng trưởng.

Phần thưởng đã đọc:Cách tính doanh số bán hàng trung bình mỗi ngày trong MySQL

Nếu bạn muốn lọc dữ liệu của mình trước khi tính toán phần trăm tăng trưởng từng tháng, bạn có thể làm điều đó bằng cách thêm mệnh đề WHERE vào truy vấn của mình như được hiển thị bên dưới

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;

Phần thưởng Đọc:Làm thế nào để Tính Tổng Doanh số Mỗi tháng trong MySQL?

Xin lưu ý :Vì việc tính toán tỷ lệ phần trăm tăng trưởng từng tháng dựa trên khái niệm lưu trữ giá trị của hàng trước đó trong một biến tạm thời, hãy đảm bảo rằng bảng của bạn được sắp xếp theo thứ tự tăng dần của tháng (ví dụ:1,2,3, v.v. hoặc 202001,202002 , 202003, v.v.). Nếu không, dữ liệu của bạn có thể được sắp xếp theo thứ tự bảng chữ cái và đưa ra kết quả sai khi bạn tính toán phần trăm tăng trưởng từng tháng trong MySQL.

Bạn có thể sử dụng công cụ báo cáo để vẽ dữ liệu này trên biểu đồ thanh hoặc trang tổng quan và chia sẻ nó với nhóm của bạn. Dưới đây là một ví dụ về biểu đồ thanh cho thấy mức tăng trưởng doanh số theo phần trăm hàng tháng, được tạo bằng cách sử dụng Ubiq.

Nếu bạn muốn tạo biểu đồ, trang tổng quan và báo cáo từ cơ sở dữ liệu MySQL, bạn có thể thử Ubiq. Chúng tôi cung cấp bản dùng thử miễn phí 14 ngày.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ YEAR () - MySQL

  2. Giới thiệu đơn giản về cách sử dụng MySQL trên Linux Terminal

  3. Cách kiểm tra kích thước cơ sở dữ liệu MySQL trong Linux

  4. Quản lý tài khoản người dùng, vai trò, quyền, xác thực PHP và MySQL

  5. Tính khả dụng cao với ngân sách hạn hẹp - Triển khai Cụm MySQL Galera tối thiểu hai nút