MySQL में किसी कॉलम के सभी मानों का योग (sum) निकालने के लिए SUM() एग्रीगेट फ़ंक्शन का उपयोग करें। यह संख्यात्मक कॉलम्स पर काम करता है।
सिंटैक्स
SELECT SUM(column_name) AS alias_name FROM table_name;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable739 (Price INT); Query OK, 0 rows affected (0.65 sec) mysql> INSERT INTO DemoTable739 VALUES (100), (50), (1200), (500), (800); Query OK, 5 rows affected (0.20 sec)
2. सभी रिकॉर्ड्स देखें
mysql> SELECT * FROM DemoTable739; +-------+ | Price | +-------+ | 100 | | 50 | | 1200 | | 500 | | 800 | +-------+ 5 rows in set (0.00 sec)
3. कुल योग निकालें
mysql> SELECT SUM(Price) AS Total_Price FROM DemoTable739; +-------------+ | Total_Price | +-------------+ | 2650 | +-------------+ 1 row in set (0.00 sec)
उन्नत SUM उपयोग
शर्ती योग (CASE WHEN)
SELECT
SUM(CASE WHEN Price > 500 THEN Price ELSE 0 END) AS high_value_sum,
SUM(CASE WHEN Price <= 500 THEN Price ELSE 0 END) AS low_value_sum
FROM DemoTable739;
ग्रुप के अनुसार योग
SELECT category, SUM(price) FROM products GROUP BY category;
विंडो फ़ंक्शन के साथ चल योग (MySQL 8.0+)
SELECT
Price,
SUM(Price) OVER (ORDER BY Id ROWS UNBOUNDED PRECEDING) AS running_total
FROM DemoTable739;
DISTINCT के साथ योग (अद्वितीय मानों का योग)
SELECT SUM(DISTINCT Price) FROM DemoTable739;
NULL मान संभालना
SUM()NULL मानों को अनदेखा करता है (उन्हें 0 के रूप में मानता है)- यदि सभी मान NULL हैं, तो परिणाम NULL होता है (0 नहीं)
COALESCE(SUM(col), 0)का उपयोग करके 0 सुनिश्चित करें
SELECT COALESCE(SUM(Price), 0) FROM DemoTable739 WHERE Price > 10000; -- 0 लौटाता है
संबंधित एग्रीगेट फ़ंक्शन्स
| फ़ंक्शन | विवरण |
|---|---|
SUM() | योग |
AVG() | औसत |
MIN() | न्यूनतम |
MAX() | अधिकतम |
COUNT() | गिनती |
STDDEV() | मानक विचलन |
VARIANCE() | विचरण |
प्रदर्शन टिप
कॉलम पर इंडेक्स होने से SUM() के लिए पूर्ण टेबल स्कैन अभी भी आवश्यक है (एग्रीगेशन के लिए)। कवरिंग इंडेक्स मदद कर सकता है यदि WHERE क्लॉज चयनात्मक है।