Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में संचित (रनिंग टोटल/क्युमुलेटिव सम) कॉलम कैसे चुनें?

MySQL में यूज़र-डिफ़ाइंड वेरिएबल से रनिंग टोटल (संचित योग) निकालना

MySQL 8.0 से पहले विंडो फ़ंक्शन (SUM() OVER) नहीं थे, इसलिए यूज़र-डिफ़ाइंड वेरिएबल (@var) का उपयोग करके संचित योग निकाला जाता है।

टेबल और डेटा

CREATE TABLE accumulatedDemo (Value INT);
INSERT INTO accumulatedDemo VALUES (10), (15), (20), (25), (45);

क्वेरी: यूज़र वेरिएबल के साथ

SET @previousSum = 0;
SELECT Value, @previousSum := @previousSum + Value AS AccumulatedColumn
FROM accumulatedDemo;

आउटपुट

+-------+-------------------+
| Value | AccumulatedColumn |
+-------+-------------------+
| 10    | 10                |
| 15    | 25                |
| 20    | 45                |
| 25    | 70                |
| 45    | 115               |
+-------+-------------------+

MySQL 8.0+ में विंडो फ़ंक्शन (अनुशंसित)

SELECT Value,
       SUM(Value) OVER (ORDER BY (SELECT NULL) ROWS UNBOUNDED PRECEDING) AS AccumulatedColumn
FROM accumulatedDemo;

(SELECT NULL) क्रम को अपरिभाषित रखता है (इन्सर्शन ऑर्डर)। यदि कोई क्रम कॉलम है (जैसे id), तो ORDER BY id उपयोग करें।

तुलना

  • वेरिएबल विधि: पुराने संस्करणों में काम करती है, लेकिन क्रम की गारंटी नहीं देती जब तक ORDER BY न हो।
  • विंडो फ़ंक्शन: मानक SQL, पठनीय, ऑप्टिमाइज़र फ्रेंडली, समानांतर निष्पादन सुरक्षित।

चेतावनी

यूज़र वेरिएबल विधि में ORDER BY के बिना परिणाम अप्रत्याशित हो सकते हैं। हमेशा स्पष्ट क्रम निर्दिष्ट करें।

  1. - MySQL में सेसन वेरिएबल से कॉलम मान को पिछले मान के साथ जोड़ना

    सेसन वेरिएबल का उपयोग करके रनिंग टोटल MySQL में एक कॉलम के मान को पिछली पंक्ति के मान के साथ जोड़कर (रनिंग टोटल/क्यूमुलेटिव सम) बनाने के लिए यूजर-डिफाइंड वेरिएबल (@var) का उपयोग करें। उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना mysql> CREATE TABLE DemoTable809(Price INT); Query OK, 0 rows affected (

  1. - MySQL में शर्त के आधार पर कॉलम का SUM कैसे निकालें

    WHERE क्लॉज के साथ कंडीशनल SUM आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ProductAmount INT, CustomerCountryName VARCHAR(10) ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable (ProductAmount, CustomerCountryN

  1. - MySQL में DISTINCT कॉलम से औसत कैसे चुनें?

    MySQL में विशिष्ट (DISTINCT) मानों के आधार पर औसत निकालने के लिए, सबक्वेरी में DISTINCT का उपयोग करके डुप्लिकेट हटाएं, फिर बाहरी क्वेरी में AVG() लागू करें। उदाहरण: विशिष्ट छात्र-मान संयोजनों का औसत डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1934 ( StudentName VARCHAR(20), StudentMa