MySQL không có chức năng tính tổng tích lũy, còn được gọi là tổng đang chạy. Bạn cần viết một truy vấn SQL để tính tổng tích lũy trong MySQL. Vì vậy, hãy xem xét một truy vấn SQL để tính toán tổng số đang chạy trong MySQL.
Cách tính Tổng số Đang chạy trong MySQL
Dưới đây là cách tính toán tổng số đang chạy trong MySQL. Giả sử bạn có bảng sau chứa doanh số 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 toán tổng số đang chạy cho bảng này, giống 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 | +------------+------+-----------------+
Phần thưởng đọc:Cách kết hợp nhiều dòng thành một trường trong MySQL
Đây là truy vấn SQL để tính toán tổng số đang chạ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 | +------------+------+-----------------+
Trong truy vấn trên, trước tiên, chúng tôi đặt csum biến do người dùng xác định thành 0. Chúng tôi sử dụng biến này để lưu trữ tổng số đang chạy của mỗi hàng. Điều quan trọng cần lưu ý là csum không được lưu trữ trong bất kỳ bảng nào. Nó chỉ được sử dụng để hiển thị tổng giá trị đang chạy.
Nếu bạn muốn lưu trữ tổng số đang chạy này, bạn có thể 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 để lưu trữ tổng giá trị đang chạy.
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 | +------------+------+----------------+
Phần thưởng đọc:Cách thêm tổng số hàng trong MySQL
Bạn cũng có thể tùy chỉnh truy vấn SQL của mình bằng cách sử dụng mệnh đề WHERE hoặc JOINS, như được hiển thị,
mysql> set @csum := 0; mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale from sales where <condition> order by order_date;
Vì MySQL không cung cấp bất kỳ chức năng tích hợp nào để chạy tổng, bạn có thể sử dụng truy vấn SQL ở trên để chạy tổng trong MySQL. Bạn cũng có thể sử dụng MONTH (order_date) thay vì order_date ở trên nếu bạn muốn viết SQL cho tổng tích lũy theo tháng.
Sau khi bạn tính toán tổng số hoạt động, bạn có thể sử dụng công cụ biểu đồ để vẽ dữ liệu này trong biểu đồ đường và chia sẻ nó với nhóm của bạn. Dưới đây là một ví dụ về biểu đồ đường hiển thị tổng số đang chạy, đượ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.