MySQL में यूजर-डिफाइंड वेरिएबल का उपयोग करके क्यूमुलेटिव सम (रनिंग टोटल) कॉलम बनाएं।
सिंटैक्स
-- वेरिएबल इनिशियलाइज़ करें
SET @cumulativeSum := 0;
-- क्यूमुलेटिव सम क्वेरी
SELECT column1, column2,
(@cumulativeSum := @cumulativeSum + column2) AS cumulative_sum
FROM yourTableName
ORDER BY column1;
उदाहरण
टेबल बनाना
mysql> create table CumulativeSumDemo ( -> BookId int, -> BookPrice int -> ); Query OK, 0 rows affected (0.67 sec)
रिकॉर्ड डालना
mysql> insert into CumulativeSumDemo values(101,400); mysql> insert into CumulativeSumDemo values(102,500); mysql> insert into CumulativeSumDemo values(103,600); mysql> insert into CumulativeSumDemo values(104,1000);
वेरिएबल इनिशियलाइज़ करना
mysql> set @CumulativeSum := 0; Query OK, 0 rows affected (0.00 sec)
क्यूमुलेटिव सम क्वेरी
mysql> select BookId, BookPrice, (@CumulativeSum := @CumulativeSum + BookPrice) as CumSum from CumulativeSumDemo order by BookId;
+--------+-----------+--------+ | BookId | BookPrice | CumSum | +--------+-----------+--------+ | 101 | 400 | 400 | | 102 | 500 | 900 | | 103 | 600 | 1500 | | 104 | 1000 | 2500 | +--------+-----------+--------+
व्याख्या
@CumulativeSum := 0— सत्र वेरिएबल को 0 से इनिशियलाइज़ करता है@CumulativeSum := @CumulativeSum + BookPrice— वर्तमान मान में नया मान जोड़ता है और परिणाम असाइन करता हैORDER BY BookId— सही क्रम सुनिश्चित करता है- प्रत्येक पंक्ति के लिए वेरिएबल अपडेट होता रहता है
MySQL 8.0+ विंडो फंक्शन (आधुनिक तरीका)
SELECT BookId, BookPrice,
SUM(BookPrice) OVER (ORDER BY BookId ROWS UNBOUNDED PRECEDING) AS CumSum
FROM CumulativeSumDemo;
यह तरीका अधिक पठनीय, मानक SQL-अनुरूप, और वेरिएबल पर निर्भर नहीं है।
उपयोग के मामले
- बिक्री रनिंग टोटल
- खाता शेष इतिहास
- इन्वेंट्री स्टॉक लेवल ट्रैकिंग
- प्रगति प्रतिशत गणना
सावधानियां
- वेरिएबल विधि क्रम पर निर्भर करती है — हमेशा
ORDER BYउपयोग करें - जटिल JOIN में वेरिएबल अप्रत्याशित व्यवहार कर सकते हैं
- MySQL 8.0+ में विंडो फंक्शन प्राथमिकता दें