MySQL में COALESCE(SUM(column), 0) से खाली परिणाम पर 0 वापस करना
जब WHERE क्लॉज से कोई रो मेल नहीं खाती, तो SUM() NULL लौटाता है। COALESCE() से इसे 0 में बदलें।
सिंटैक्स:
SELECT COALESCE(SUM(yourColumnName2), 0) AS anyVariableName FROM yourTableName WHERE yourColumnName1 LIKE '%yourValue%';
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE SumDemo (
-> Words VARCHAR(100),
-> Counter INT
-> );
Query OK, 0 rows affected (0.93 sec)
2. डेटा डालें:
mysql> INSERT INTO SumDemo VALUES('Are You There', 10);
mysql> INSERT INTO SumDemo VALUES('Are You Not There', 15);
mysql> INSERT INTO SumDemo VALUES('Hello This is MySQL', 12);
mysql> INSERT INTO SumDemo VALUES('Hello This is not MySQL', 14);
3. सभी रिकॉर्ड:
+-------------------------+---------+ | Words | Counter | +-------------------------+---------+ | Are You There | 10 | | Are You Not There | 15 | | Hello This is MySQL | 12 | | Hello This is not MySQL | 14 | +-------------------------+---------+ 4 rows in set (0.00 sec)
4. केस 1: मेल खाने वाले रिकॉर्ड मौजूद हैं ("hello"):
mysql> SELECT COALESCE(SUM(Counter), 0) AS SumOfAll
-> FROM SumDemo WHERE Words LIKE '%hello%';
+----------+ | SumOfAll | +----------+ | 26 | +----------+ 1 row in set (0.00 sec)
(12 + 14 = 26)
5. केस 2: कोई मेल नहीं ("End of MySQL"):
mysql> SELECT COALESCE(SUM(Counter), 0) AS SumOfAll
-> FROM SumDemo WHERE Words LIKE '%End of MySQL%';
+----------+ | SumOfAll | +----------+ | 0 | +----------+ 1 row in set (0.00 sec)
क्यों COALESCE जरूरी है?
-- COALESCE के बिना: SELECT SUM(Counter) FROM SumDemo WHERE Words LIKE '%nonexistent%'; -- परिणाम: NULL (नहीं 0) -- COALESCE के साथ: SELECT COALESCE(SUM(Counter), 0) FROM SumDemo WHERE Words LIKE '%nonexistent%'; -- परिणाम: 0
अन्य एग्रीगेट फंक्शन के साथ:
| फंक्शन | खाली सेट पर परिणाम | COALESCE के साथ |
|---|---|---|
| SUM() | NULL | COALESCE(SUM(col), 0) |
| AVG() | NULL | COALESCE(AVG(col), 0) |
| COUNT() | 0 (कभी NULL नहीं) | जरूरी नहीं |
| MIN()/MAX() | NULL | COALESCE(MIN(col), 0) |
व्यावहारिक उपयोग केस:
- बिक्री रिपोर्ट: किसी दिन बिक्री न होने पर 0 दिखाएं
- डैशबोर्ड मीट्रिक: NULL से UI ब्रेक होने से बचाएं
- गणना में:
COALESCE(SUM(sales), 0) + COALESCE(SUM(returns), 0)