GROUP BY
. का उपयोग करते समय आपको सावधान रहने की आवश्यकता है . एक बार जब आप समझ जाते हैं कि GROUP BY
. क्या है करता है, आप स्वयं इस मुद्दे को जानेंगे। यह आपके डेटा पर एक एकत्रीकरण करता है या दूसरे शब्दों में, यह कच्ची प्रविष्टियों पर कुछ ऑपरेशन करके और प्रविष्टियों की नई कम संख्या बनाकर आपके डेटा को कम करता है, जिस पर कुछ एकत्रीकरण फ़ंक्शन लागू किया गया है (SUM, COUNT, AVG, आदि) पी>
GROUP BY
. में आप जो फ़ील्ड प्रदान करते हैं क्लॉज उस एकत्रीकरण/रोल-अप के स्तर का प्रतिनिधित्व करता है जिसके लिए आप जा रहे हैं।
SELECT col2, col3 FROM tbl WHERE col1 IS NULL GROUP BY col1 ORDER BY col1
यहां आप col1
. पर एकत्रीकरण करने का प्रयास कर रहे हैं स्तर, जिसका अर्थ है कि कॉलम में मौजूद प्रत्येक विशिष्ट मान के लिए col1
, आपके द्वारा SELECT
. में प्रदान किए गए कुछ अन्य कॉलम पर कुछ ऑपरेशन किया जाएगा खंड (यहां col2
,col3
) ताकि आउटपुट में आपके पास col1
. में गैर-दोहराए जाने वाले मान हों और col2
. के कुछ रोल-अप मान और col3
प्रत्येक विशिष्ट col1
. के सामने आपके द्वारा लागू किए जाने वाले फ़ंक्शन (SUM, COUNT, AVG, आदि) के आधार पर मान।
आप इस फ़ंक्शन को कैसे लागू करते हैं? आपकी उपरोक्त क्वेरी में यही गायब है। इसे हल करने के लिए, आपको SELECT
में मौजूद फ़ील्ड पर कुछ एग्रीगेशन फ़ंक्शन लागू करना होगा खंड लेकिन GROUP BY
. में नहीं खंड। एसयूएम का उदाहरण लेते हुए इसे आजमाएं:
SELECT SUM(col2), SUM(col3) FROM tbl WHERE col1 IS NULL GROUP BY col1 ORDER BY col1
या बेहतर विचार के लिए, WHERE
. को हटा दें फ़िल्टर करें और आउटपुट को चलाकर जाँचें:
SELECT col1, SUM(col2), SUM(col3) FROM tbl GROUP BY col1 ORDER BY col1
इसके अतिरिक्त, आपकी अन्य क्वेरी का कारण
SELECT col2 FROM tbl WHERE col1 IS NULL GROUP BY col2 ORDER BY col2
काम किया है क्योंकि आपको क्षेत्र में एकत्रीकरण लागू करने की आवश्यकता नहीं है (यहां col2
) जो GROUP BY
. में मौजूद है खंड।