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

MySQL में क्यूमुलेटिव सम (संचयी योग) कॉलम कैसे बनाएं?


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+ में विंडो फंक्शन प्राथमिकता दें

  1. - MySQL में SUBSTRING_INDEX() का उपयोग करके कॉलम कैसे विभाजित करें?

    MySQL में SUBSTRING_INDEX() और LOCATE() फ़ंक्शन का उपयोग करके डिलिमिटर (जैसे अंडरस्कोर) के आधार पर कॉलम को भागों में विभाजित किया जा सकता है। सिंटैक्स 0: बाएं से count भाग -- count < 0: दाएं से |count| भाग उदाहरण: पहला भाग प्राप्त करें (पहले _ से पहले) mysql> CREATE TABLE DemoTable (Name VARCH

  1. - MySQL व्यू कैसे बनाएं?

    MySQL व्यू बनाने के लिए, नीचे दिए गए सिंटैक्स में CREATE VIEW का उपयोग करें: create view yourViewName as select * from yourTableName; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1802 ( StudentId int, StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमा

  1. - MySQL सीक्वेंस कैसे बनाएं?

    MySQL में सीक्वेंस क्या है? MySQL में, एक सीक्वेंस इंटीजर्स की एक सूची को संदर्भित करता है जो आरोही क्रम में 1 से शुरू होकर या 0 से यदि निर्दिष्ट किया गया हो, उत्पन्न होती है। कई एप्लिकेशन को सीक्वेंस की आवश्यकता होती है जिनका उपयोग विशेष रूप से पहचान के लिए अद्वितीय संख्या उत्पन्न करने के लिए किया