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

MySQL में शर्त के आधार पर SUM और SUBTRACTION एक साथ कैसे करें?

CASE स्टेटमेंट से कंडीशनल एग्रीगेशन

एक ही कॉलम पर अलग-अलग शर्तों के आधार पर SUM और SUBTRACTION करने के लिए CASE स्टेटमेंट का उपयोग करें।

टेबल बनाना और डेटा इन्सर्ट करना

CREATE TABLE DemoTable866(
    Status VARCHAR(100),
    Amount INT
);

INSERT INTO DemoTable866 VALUES('ACTIVE', 50);
INSERT INTO DemoTable866 VALUES('INACTIVE', 70);
INSERT INTO DemoTable866 VALUES('INACTIVE', 20);
INSERT INTO DemoTable866 VALUES('ACTIVE', 100);
INSERT INTO DemoTable866 VALUES('ACTIVE', 200);

मौजूदा डेटा

+----------+--------+
| Status   | Amount |
+----------+--------+
| ACTIVE   | 50     |
| INACTIVE | 70     |
| INACTIVE | 20     |
| ACTIVE   | 100    |
| ACTIVE   | 200    |
+----------+--------+

क्वेरी: ACTIVE जोड़ें, INACTIVE घटाएं

SELECT SUM(
    CASE 
        WHEN Status = 'ACTIVE' THEN Amount
        WHEN Status = 'INACTIVE' THEN -Amount
    END
) AS RemainingAmount 
FROM DemoTable866;

आउटपुट

+-----------------+
| RemainingAmount |
+-----------------+
| 260             |
+-----------------+

गणना

ACTIVE: 50 + 100 + 200 = 350
INACTIVE: -(70 + 20) = -90
कुल: 350 - 90 = 260

अधिक शर्तों के साथ विस्तारित उदाहरण

SELECT 
    SUM(CASE WHEN Status = 'ACTIVE' THEN Amount ELSE 0 END) AS TotalActive,
    SUM(CASE WHEN Status = 'INACTIVE' THEN Amount ELSE 0 END) AS TotalInactive,
    SUM(CASE WHEN Status = 'PENDING' THEN Amount ELSE 0 END) AS TotalPending,
    SUM(CASE 
        WHEN Status = 'ACTIVE' THEN Amount
        WHEN Status = 'INACTIVE' THEN -Amount
        ELSE 0
    END) AS NetAmount
FROM DemoTable866;

महत्वपूर्ण बिंदु

  • CASE के अंदर एग्रीगेट फंक्शन (SUM, COUNT) उपयोग करें
  • ELSE 0 डिफॉल्ट के लिए महत्वपूर्ण है, नहीं तो NULL परिणाम मिल सकता है
  • CASE दो फॉर्मेट में आता है: सिंपल (CASE col WHEN val) और सर्च्ड (CASE WHEN condition)
  • सर्च्ड फॉर्मेट अधिक लचीला है और यहां उपयोग किया गया है
  1. - MySQL UNION SELECT और IN क्लॉज एक ही क्वेरी में

    UNION और IN क्लॉज को संयोजित करना पहले टेबल बनाएं: create table DemoTable1 ( StudentId int, StudentName varchar(20) ); Query OK, 0 rows affected (1.24 sec) रिकॉर्ड डालें: insert into DemoTable1 values(210,Adam); Query OK, 1 row affected (0.11 sec) सभी रिकॉर्ड देखें: select * from DemoTable1; आउटप

  1. - MySQL में पंक्तियों के मान जोड़कर परिणाम सॉर्ट करना

    GROUP BY और ORDER BY से समूहवार योग और क्रम SUM() और GROUP BY से प्रत्येक समूह का योग निकालें, फिर ORDER BY से परिणाम क्रमबद्ध करें। तालिका और डेटा (Chris, 45), (David, 98), (Bob, 58); क्वेरी: नामवार कुल अंक, अवरोही क्रम ORDER BY TotalSum DESC; परिणाम +-------------+----------+ | StudentName

  1. - MySQL में SUM और FORMAT संयोजित करके परिणाम फॉर्मेट कैसे करें?

    MySQL में संख्यात्मक कॉलम का योग निकालकर उसे फॉर्मेटेड स्ट्रिंग (दशमलव स्थान, हजार सेपरेटर) के रूप में प्रदर्शित करने के लिए, SUM() के चारों ओर FORMAT() फंक्शन लपेटें। यह वित्तीय रिपोर्ट, इनवॉइस, और डैशबोर्ड के लिए आदर्श है। उदाहरण: Amount कॉलम का योग और फॉर्मेट डेमो टेबल बनाएं: mysql> CREATE