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.