Obecně řečeno, SQL nebylo ve skutečnosti zamýšleno k získání „průběžných součtů“, jak si přejete. Jiné RDBMS zavedly proprietární rozšíření pro poskytování analytických funkcí, které umožňují výpočty tohoto druhu, ale MySQL takové funkce postrádá.
Místo toho má člověk v podstatě čtyři možnosti. V žádném konkrétním pořadí:
-
Akumulujte průběžný součet ve vaší aplikaci, když procházíte sadou výsledků;
-
Upravte své schéma tak, abyste sledovali průběžný součet v databázi (obzvláště dobré v situacích, jako je tato, kdy se nová data připojují pouze "na konec");
-
Seskupit vlastní připojení:
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
-
Nashromáždit průběžný součet v uživatelské proměnné :
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