Secara umum, SQL tidak benar-benar dimaksudkan untuk menghasilkan "total berjalan" seperti yang Anda inginkan. RDBMS lain telah memperkenalkan ekstensi eksklusif untuk memberikan fungsi analitik yang memungkinkan penghitungan semacam ini, tetapi MySQL tidak memiliki fitur seperti itu.
Sebaliknya, satu secara luas memiliki empat pilihan. Tanpa urutan tertentu:
-
Akumulasi total yang berjalan di aplikasi Anda, saat Anda mengulang hasil;
-
Ubah skema Anda untuk melacak total yang berjalan dalam database Anda (terutama bagus dalam situasi seperti ini, di mana data baru hanya ditambahkan "sampai akhir");
-
Kelompokkan self-join:
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
-
Akumulasi total yang berjalan dalam variabel pengguna :
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