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

MySQL में SUM() से NULL के बजाय 0 कैसे वापस करें?

जब SUM() को कोई पंक्ति नहीं मिलती या सभी मान NULL होते हैं, तो यह NULL वापस करता है। 0 पाने के लिए COALESCE() या IFNULL() उपयोग करें।

समस्या

mysql> SELECT SUM(NULL);
+----------+
| SUM(NULL) |
+----------+
| NULL     |
+----------+

समाधान 1: COALESCE() (ANSI मानक, सुझाया गया)

mysql> SELECT COALESCE(SUM(NULL), 0) AS SUMOFTWO;
+----------+
| SUMOFTWO |
+----------+
| 0        |
+----------+

समाधान 2: IFNULL() (MySQL-विशिष्ट)

mysql> SELECT IFNULL(SUM(NULL), 0) AS SUMOFTWO;
+----------+
| SUMOFTWO |
+----------+
| 0        |
+----------+

व्यावहारिक उदाहरण

-- बिक्री रिपोर्ट: कोई बिक्री नहीं तो 0 दिखाएं
SELECT 
    product_id,
    COALESCE(SUM(quantity), 0) AS total_sold
FROM sales
WHERE sale_date >= '2024-01-01'
GROUP BY product_id;

-- LEFT JOIN के बाद NULL से बचने के लिए
SELECT 
    p.name,
    COALESCE(SUM(s.quantity), 0) AS total_sold
FROM products p
LEFT JOIN sales s ON p.id = s.product_id
GROUP BY p.id, p.name;

COALESCE vs IFNULL

फंक्शनपक्षविपक्ष
COALESCEANSI SQL मानक, एकाधिक आर्गुमेंट (COALESCE(a,b,c,0))थोड़ा धीमा (नगण्य)
IFNULLMySQL में थोड़ा तेज़, केवल 2 आर्गुमेंटपोर्टेबल नहीं

नोट

SUM() NULL मानों को अनदेखा करता है (उन्हें गिनता नहीं)। केवल तब NULL वापस करता है जब कोई पंक्ति नहीं मिलती या सभी मान NULL होते हैं।

  1. - MySQL में विशिष्ट मान और उनकी गिनती कैसे वापस करें

    केवल विशिष्ट मान वापस करने के लिए, GROUP BY क्लॉज का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable754 (ProductPrice int); Query OK, 0 rows affected (0.48 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable754 values(200); Query OK, 1 ro

  1. - MySQL SUM फ़ंक्शन का उपयोग करके दशमलव मान जोड़ना

    MySQL में SUM() फ़ंक्शन के साथ दशमलव मानों का योग निकालना SUM() एग्रीगेट फ़ंक्शन संख्यात्मक कॉलम के सभी मानों का योग निकालता है। यह DECIMAL डेटा प्रकार के साथ सटीकता बनाए रखते हुए पूरी तरह काम करता है। व्यावहारिक उदाहरण तालिका बनाना (DECIMAL प्रकार के साथ) CREATE TABLE DemoTable ( Money DECIM

  1. - MySQL में महीने के अनुसार टेबल में मानों का योग कैसे करें

    EXTRACT(MONTH FROM ...) और GROUP BY के साथ मासिक योग इसके लिए EXTRACT() का उपयोग करें, जो विशिष्ट महीने के रिकॉर्ड निकालने की अनुमति देता है। उदाहरण के लिए, जनवरी में सभी कीमतों को जोड़ना (वर्ष की परवाह किए बिना)। पहले टेबल बनाएं: create table DemoTable1415 ( ProductPurchaseDate date, ProductPrice