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

Cách tính phần trăm tăng trưởng hàng tuần trong MySQL

Theo dõi Phần trăm Tăng trưởng Hàng tuần là một cách hữu ích để theo dõi các xu hướng tăng trưởng hàng tuần trong doanh nghiệp của bạn. Dưới đây là cách tính toán phần trăm tăng trưởng hàng tuần trong MySQL. Nó có thể được sử dụng để tính toán sự thay đổi hàng tuần trong SQL cho bất kỳ số liệu nào.

Cách tính phần trăm tăng trưởng hàng tuần trong MySQL

Dưới đây là các bước để tính toán phần trăm tăng trưởng hàng tuần trong MySQL. Giả sử bạn có một bảng week_sales (tuần, giảm giá) chứa các số bán hàng tuần, như được hiển thị bên dưới.

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

Bạn có thể tính toán phần trăm tăng trưởng hàng tuần bằng cách sử dụng truy vấn SQL sau cho phần trăm tăng trưởng.

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

Trong truy vấn trên, đối với mỗi tuần, chúng tôi lưu trữ dữ liệu của tuần trước đó trong một biến tạm thời có tên là last_entry và sử dụng nó để tính toán phần trăm tăng trưởng.

Phần thưởng đã đọc:Cách tính Tỷ lệ phần trăm của hai cột trong MySQL

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 thay vì doanh số hàng tuần. Vì vậy, trong trường hợp đó, trước tiên bạn cần phải tổng hợp nó thành doanh số bán hàng hàng tuần và sau đó sử dụng truy vấn trên để tính toán phần trăm tăng trưởng hàng tuần.

Giả sử bạn có bảng dữ liệu bán hàng hàng ngày (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 |
| ...        |   ...|
+------------+------+

Giả sử bạn muốn tính toán phần trăm tăng trưởng theo tuần, đây là SQL cho phần trăm thay đổi theo thời gian.

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

Trong truy vấn trên, trước tiên, chúng tôi tổng hợp doanh số hàng ngày thành doanh số hàng tuần (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 theo tuần.

Phần thưởng đọc:Cách tính phần trăm của một cột trong MySQL

Nếu bạn muốn lọc dữ liệu được sử dụng cho truy vấn của mình, bạn có thể thêm mệnh đề WHERE trong truy vấn của mình như được hiển thị bên dưới

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;

Xin lưu ý, vì việc tính toán phần trăm tăng trưởng theo tuần phụ thuộc vào việc 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 số tuần. Nếu không, nó có thể cho kết quả sai.

Sau khi bạn tính toán phần trăm tăng trưởng theo tuần, bạn có thể sử dụng công cụ biểu đồ để vẽ kết quả dưới dạng biểu đồ thanh và chia sẻ kết quả đó với nhóm của bạn. Dưới đây là một ví dụ về biểu đồ thanh hiển thị phần trăm thay đổi theo thời gian, được tạo bằ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. Cách truy cập đối tượng RowDataPacket

  2. Chèn có điều kiện MySQL

  3. Chuyển đổi các ký tự latin1 trên bảng UTF8 thành UTF8

  4. Ví dụ về ADDTIME () - MySQL

  5. Xây dựng lại MySQL 8.0 Replication Slave bằng cách sử dụng một plugin nhân bản