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

Cách tính Tổng tích lũy trong MySQL

Nhiều khi bạn có thể cần phải tính toán tổng số đang chạy hoặc tổng số tích lũy cho một cột cụ thể, chẳng hạn như doanh số bán hàng. Vì không có chức năng nào để tính tổng tích lũy trong MySQL, bạn cần thực hiện nó thông qua truy vấn SQL. Đây là một truy vấn SQL để tính tổng tích lũy trong MySQL.

Cách tính Tổng tích lũy trong MySQL

Dưới đây là cách tính tổng tích lũy trong MySQL. Giả sử bạn có bảng sau chứa dữ liệu 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-01-05',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-01-05 |   20 |
+------------+------+

Giả sử bạn muốn tính tổng doanh số bán hàng tích lũy, như vậy,

+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 |   20 |              20 |
| 2020-01-02 |   25 |              45 |
| 2020-01-03 |   15 |              60 |
| 2020-01-04 |   30 |              90 |
| 2020-01-05 |   20 |             110 |
+------------+------+-----------------+

Đây là truy vấn SQL để tính tổng tích lũy trong MySQL.

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales
       order by order_date;
+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 |   20 |              20 |
| 2020-01-02 |   25 |              45 |
| 2020-01-03 |   15 |              60 |
| 2020-01-04 |   30 |              90 |
| 2020-01-05 |   20 |             110 |
+------------+------+-----------------+

Phần thưởng đọc:Cách tạo Pivot Table trong MySQL

Trong truy vấn trên, chúng tôi đặt một biến tạm thời csum thành 0. Sau đó, đối với mỗi hàng, chúng tôi sử dụng nó để tính toán và lưu trữ tổng tích lũy.

Xin lưu ý, tổng tích lũy này không được lưu trữ trong bất kỳ cột nào. Nó chỉ được hiển thị trong kết quả.

Nếu bạn muốn lưu trữ giá trị này, bạn cần thêm một cột mới vào bảng của mình và sử dụng mệnh đề CẬP NHẬT như được hiển thị bên dưới.

mysql> alter table sales add column cumulative_sum int;

mysql> set @csum := 0;

mysql> update sales
       set cumulative_sum = (@csum := @csum + sale)
       order by order_date;

mysql> select order_date,sale,cumulative_sum from sales;
+------------+------+----------------+
| order_date | sale | cumulative_sum |
+------------+------+----------------+
| 2020-01-01 |   20 |             20 |
| 2020-01-02 |   25 |             45 |
| 2020-01-03 |   15 |             60 |
| 2020-01-04 |   30 |             90 |
| 2020-01-05 |   20 |            110 |
+------------+------+----------------+

Bạn có thể tùy chỉnh truy vấn SQL của mình để bao gồm các bộ lọc bằng mệnh đề WHERE hoặc JOINS, như được hiển thị bên dưới

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;

Phần thưởng đọc:Cách tính giá trị trung bình trong MySQL

Vì MySQL không cung cấp hàm tích hợp cho tổng tích lũy, bạn có thể sử dụng truy vấn SQL ở trên để tính tổng tích lũy trong MySQL.

Sau khi bạn có thể tính toán tổng tích lũy trong MySQL, bạn có thể sử dụng công cụ biểu đồ dễ dàng vẽ chúng dưới dạng biểu đồ đường hoặc biểu đồ thanh, như được hiển thị bên dưới. Dưới đây là ví dụ về biểu đồ đượ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. Lưu trữ tên người dùng và mật khẩu trong cơ sở dữ liệu có an toàn không?

  2. Tạo ứng dụng web từ Scratch bằng Python Flask và MySQL:Phần 4

  3. Percona Live Dublin - Tóm tắt sự kiện và các phiên của chúng tôi

  4. Kiểu dữ liệu ENUM (Enumeration) trong MySQL:12 sự kiện hàng đầu và lời khuyên hữu ích

  5. Bạn có được phép sử dụng số làm tên bảng trong MySQL không?