Nói chung, SQL không thực sự nhằm mang lại "tổng số đang chạy" như bạn mong muốn. Các RDBMS khác đã giới thiệu các phần mở rộng độc quyền để cung cấp các chức năng phân tích cho phép tính toán loại này, nhưng MySQL thiếu các tính năng như vậy.
Thay vào đó, một cách rộng rãi có bốn lựa chọn. Không theo thứ tự cụ thể:
-
Tích lũy tổng số đang chạy trong ứng dụng của bạn, khi bạn lặp lại tập kết quả;
-
Thay đổi lược đồ của bạn để theo dõi tổng số đang chạy trong cơ sở dữ liệu của bạn (đặc biệt tốt trong những tình huống như thế này, khi dữ liệu mới chỉ được nối "vào cuối");
-
Nhóm tự tham gia:
SELECT a.Sale_Date, SUM(a.Stock_Delivered) AS Stock_Delivered, SUM(a.Units_Sold) AS Units_Sold, SUM(b.Stock_Delivered - b.Units_Sold) AS `Stock Balance` FROM sales_report a JOIN sales_report b ON b.Sale_Date <= a.Sale_Date GROUP BY a.Sale_Date
-
Tích lũy tổng số đang chạy trong biến người dùng :
SELECT Sale_Date, Stock_Delivered, Units_Sold, @t := @t + Stock_Delivered - Units_Sold AS `Stock Balance` FROM sales_report, (SELECT @t:=0) init ORDER BY Sale_Date