आम तौर पर बोलते हुए, एसक्यूएल वास्तव में आपकी इच्छा के अनुसार "चलने वाले योग" उत्पन्न करने का इरादा नहीं था। अन्य RDBMS ने विश्लेषणात्मक कार्यों को वितरित करने के लिए मालिकाना एक्सटेंशन पेश किया है जो इस प्रकार की गणना को सक्षम करते हैं, लेकिन MySQL में ऐसी सुविधाओं का अभाव है।
इसके बजाय, मोटे तौर पर एक के पास चार विकल्प होते हैं। किसी विशेष क्रम में नहीं:
-
जैसे ही आप परिणामसेट पर लूप करते हैं, अपने एप्लिकेशन में एक रनिंग टोटल जमा करें;
-
अपने डेटाबेस के भीतर चल रहे कुल का ट्रैक रखने के लिए अपनी स्कीमा को बदलें (विशेष रूप से इस तरह की स्थितियों में अच्छा है, जहां नया डेटा केवल "अंत तक" जोड़ा जाता है);
-
समूह में स्वयं शामिल हों:
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
-
रनिंग टोटल को यूजर वेरिएबल में जमा करें। :
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