कोई मान मौजूद नहीं होने पर MySQL के SUM फ़ंक्शन से '0' कैसे प्राप्त करें
MySQL में SUM फ़ंक्शन संख्यात्मक एकत्रीकरण का एक सुविधाजनक तरीका प्रदान करता है मूल्य. हालाँकि, जब क्वेरी के दौरान कोई मेल खाने वाली पंक्तियाँ नहीं मिलती हैं, तो SUM फ़ंक्शन आमतौर पर एक NULL मान लौटाता है। कुछ उपयोग के मामलों के लिए, NULL के बजाय '0' लौटाना अधिक वांछनीय हो सकता है।
समस्या को हल करने के लिए COALESCE का उपयोग
इस समस्या का समाधान निहित है COALESCE फ़ंक्शन. COALESCE आपको एक डिफ़ॉल्ट मान निर्दिष्ट करने की अनुमति देता है, जब पहला तर्क NULL पर मूल्यांकन करता है।
निम्नलिखित उदाहरण पर विचार करें:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
इस क्वेरी में, COALESCE SUM फ़ंक्शन के चारों ओर लपेटता है। यदि उन पंक्तियों के लिए कॉलम_1 का SUM जहां कॉलम_2 'टेस्ट' के बराबर है, शून्य मान लौटाता है, तो COALESCE इसके बजाय '0' प्रदान करेगा।
प्रदर्शन और अधिक जानकारी
http पर जाएं के लाइव प्रदर्शन के लिए ://www.sqlfiddle.com/#!2/d1542/3/0 समाधान।
COALESCE की बारीकियों को गहराई से समझने के लिए, विभिन्न मूल्य वितरण के साथ तीन तालिकाओं को शामिल करने वाले निम्नलिखित परिदृश्य पर विचार करें:
निम्नलिखित क्वेरी लागू करके:
SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM baz
आपको निम्नलिखित प्राप्त होगा परिणाम:
TABLE_NAME | विवरण | EXP ECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | मिश्रित शून्य/गैर-शून्य | 21 | 21 |
bar | सभी गैर-शून्य | 21 | 21 |
baz | सभी शून्य | 0 | 0 |
जैसा कि आप देख सकते हैं, COALESCE फ़ंक्शन कुशलतापूर्वक 'baz' तालिका के लिए '0' लौटाता है, जहां सभी मान शून्य हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3