MySQL में SUM() एग्रीगेट फ़ंक्शन के साथ GROUP BY क्लॉज का उपयोग करके एक कॉलम के मानों का योग दूसरी कॉलम की शर्त के आधार पर निकाला जा सकता है।
उदाहरण परिदृश्य
कर्मचारी वेतन डेटा को ज्वाइनिंग वर्ष और महीने के अनुसार समूहित करके कुल वेतन निकालना।
तालिका और डेटा
mysql> CREATE TABLE DemoTable (
-> EmployeeName VARCHAR(20),
-> JoiningDate DATE,
-> Salary INT
-> );
mysql> INSERT INTO DemoTable VALUES
-> ('David', '2019-11-02', 400),
-> ('Robert', '2018-11-25', 100),
-> ('Bob', '2019-12-14', 600),
-> ('Carol', '2019-11-03', 300);
क्वेरी: वर्ष और महीने के अनुसार वेतन योग
mysql> SELECT
-> YEAR(JoiningDate) AS JoiningYear,
-> MONTH(JoiningDate) AS JoiningMonth,
-> SUM(Salary) AS Total,
-> GROUP_CONCAT(EmployeeName) AS Names
-> FROM DemoTable
-> GROUP BY JoiningYear, JoiningMonth;
परिणाम
+-------------+--------------+-------+-------------+
| JoiningYear | JoiningMonth | Total | Names |
+-------------+--------------+-------+-------------+
| 2018 | 11 | 100 | Robert |
| 2019 | 11 | 700 | David,Carol |
| 2019 | 12 | 600 | Bob |
+-------------+--------------+-------+-------------+
मुख्य अवधारणाएं
YEAR(),MONTH()- दिनांक से भाग निकालते हैंGROUP BY- समान मानों वाली पंक्तियों को समूहित करता हैSUM()- प्रत्येक समूह के लिए योग 계산 करता हैGROUP_CONCAT() - समूह के नामों को जोड़ता है
शर्ती योग (Conditional SUM)
केवल विशिष्ट शर्त पूरी करने वाली पंक्तियों का योग:
SELECT SUM(CASE WHEN Salary > 500 THEN Salary ELSE 0 END) AS HighSalaryTotal
FROM DemoTable;
या WHERE क्लॉज के साथ फ़िल्टर करके फिर GROUP BY करें।