SQL GROUP BY स्टेटमेंट एग्रीगेट फंक्शन में प्रकट होता है। इसका उपयोग आपके द्वारा क्वेरी से चुने गए डेटा को किसी विशेष कॉलम द्वारा संग्रहीत करने के लिए किया जाता है। आप GROUP BY स्टेटमेंट का उपयोग करके कई कॉलम निर्दिष्ट कर सकते हैं जिन्हें समूहीकृत किया जाएगा।
जब आप SQL में एग्रीगेट फंक्शन के साथ काम कर रहे होते हैं, तो सामान्य कॉलम मानों द्वारा पंक्तियों को एक साथ समूहित करना अक्सर आवश्यक होता है।
उदाहरण के लिए, मान लीजिए कि आप अपने व्यवसाय के लिए शाखा नामों की सूची प्राप्त करना चाहते हैं। इस जानकारी के साथ आप उन शाखाओं के लिए काम करने वाले कर्मचारियों की संख्या देखना चाहते हैं। आपको एग्रीगेट फंक्शन का उपयोग करना होगा और शाखा नाम द्वारा समूहित करना होगा।
यहीं SQL GROUP BY क्लॉज काम आता है। इस ट्यूटोरियल में, हम GROUP BY क्लॉज का उपयोग करने पर चर्चा करने जा रहे हैं।
एग्रीगेट फंक्शन रिफ्रेशर
अक्सर - जब आप डेटाबेस के साथ काम कर रहे होते हैं - तो आप डेटाबेस के भीतर वास्तविक डेटा देखने की तलाश नहीं कर रहे होते हैं। इसके बजाय, आप डेटा के बारे में जानकारी चाह सकते हैं। उदाहरण के लिए, आप अपने व्यवसाय द्वारा बेचे जाने वाले अद्वितीय उत्पादों की संख्या या लीडरबोर्ड पर अधिकतम स्कोर जानना चाह सकते हैं।
SQL में कई फंक्शन बिल्ट-इन हैं जो आपको यह जानकारी प्राप्त करने की अनुमति देते हैं। इन्हें एग्रीगेट फंक्शन कहा जाता है।
उदाहरण के लिए, मान लीजिए कि आप यह पता लगाना चाहते हैं कि कितने कर्मचारी सेल्स एसोसिएट हैं, आप COUNT फंक्शन का उपयोग कर सकते हैं। COUNT फंक्शन विशिष्ट मानदंडों को पूरा करने वाली पंक्तियों की संख्या गिनता है और लौटाता है। अन्य एग्रीगेट फंक्शन में SUM, AVG, MIN, और MAX शामिल हैं।
यदि आप एग्रीगेट फंक्शन के बारे में अधिक जानना चाहते हैं, तो हमारा SQL एग्रीगेट फंक्शन गाइड पढ़ें।
SQL GROUP BY
SQL GROUP BY क्लॉज पंक्तियों को संग्रहीत करता है। GROUP BY क्लॉज MIN और MAX जैसे एग्रीगेट फंक्शन का उपयोग करने वाली क्वेरी में आम हैं। GROUP BY स्टेटमेंट SQL को बताता है कि आपकी क्वेरी में किसी भी नॉन-एग्रीगेट कॉलम में जानकारी कैसे एकत्रित करनी है।
GROUP BY स्टेटमेंट के लिए सिंटैक्स है:
SELECT COUNT(column1_name), column2_name FROM table1_name GROUP BY column2_name;
हमने अपनी क्वेरी में एक एग्रीगेट फंक्शन का उपयोग किया है और एक और कॉलम निर्दिष्ट किया है।
किसी भी क्वेरी में ऐसा होने पर, हमें GROUP BY स्टेटमेंट का उपयोग करने की आवश्यकता होती है। GROUP BY स्टेटमेंट SQL को बताता है कि एग्रीगेट फंक्शन के बाहर होने पर भी शाखा डेटा कैसे प्रदर्शित करना है। आपको उस टेबल द्वारा समूहित करने की आवश्यकता है जो एग्रीगेट फंक्शन में नहीं है।
GROUP BY क्लॉज का उपयोग केवल SQL SELECT स्टेटमेंट में किया जाता है।
आइए SQL में GROUP BY क्लॉज के एक उदाहरण पर नज़र डालें।
GROUP BY SQL उदाहरण
मान लीजिए कि हम कार्यबल को दिए गए प्रत्येक टाइटल के साथ कर्मचारियों की कुल संख्या ढूंढना चाहते हैं। दूसरे शब्दों में, हम जानना चाहते हैं कि हमारे पास कितने सेल्स एसोसिएट हैं, कितने मार्केटिंग डायरेक्टर हैं, और इसी तरह।
हम इस जानकारी को पुनर्प्राप्त करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं:
SELECT title, COUNT(title) FROM employees GROUP BY title;
क्वेरी कई रिकॉर्ड लौटाती है:
| title | count |
| Senior Sales Associate | 1 |
| Sales Associate | 4 |
| Vice President of Sales | 1 |
| Marketing Director | 1 |
(4 पंक्तियाँ)
हमारी GROUP BY क्वेरी ने कर्मचारियों द्वारा धारित अद्वितीय टाइटल की सूची लौटाई है। हम प्रत्येक टाइटल के बगल में उस टाइटल को धारण करने वाले कर्मचारियों की संख्या देख सकते हैं।
SQL में GROUP BY का उपयोग कब करना चाहिए?
GROUP BY क्लॉज केवल तभी आवश्यक होता है जब आप एग्रीगेट फंक्शन द्वारा लौटाए जाने वाले से अधिक जानकारी प्राप्त करना चाहते हैं। हमने इस पर पहले थोड़ी चर्चा की थी।
यदि आप अपने ग्राहकों की संख्या प्राप्त करना चाहते हैं, तो आपको केवल एक नियमित क्वेरी चलाने की आवश्यकता है। यहां एक क्वेरी का उदाहरण है जो यह जानकारी लौटाएगी:
SELECT COUNT(name) FROM customers;
हमारी क्वेरी परिणाम को समूहित करती है और लौटाती है:
| count |
| 7 |
(1 पंक्ति)
यदि आप जानना चाहते हैं कि आपके प्रत्येक लॉयल्टी प्लान पर कितने ग्राहक हैं, तो आपको GROUP BY स्टेटमेंट का उपयोग करना होगा। यहां एक क्वेरी का उदाहरण है जो लॉयल्टी प्लान की सूची और प्रत्येक प्लान पर ग्राहकों की संख्या प्राप्त करेगी:
SELECT loyalty_plan, COUNT(loyalty_plan) FROM customers GROUP BY loyalty_plan;
हमारा क्वेरी डेटा एकत्र करता है। फिर, हमारी क्वेरी लौटाती है:
| loyalty_plan | count |
| Gold | 1 |
| None | 3 |
| Silver | 1 |
| Bronze | 2 |
(4 पंक्तियाँ)
SQL एकाधिक कॉलम द्वारा Group By
यदि हम चाहते थे, तो हम एकाधिक कॉलम पर GROUP BY कर सकते थे। उदाहरण के लिए, मान लीजिए कि हम कुछ टाइटल के साथ प्रत्येक शाखा में कितने कर्मचारी हैं, इसकी सूची प्राप्त करना चाहते थे। हम निम्न क्वेरी का उपयोग करके यह डेटा पुनर्प्राप्त कर सकते हैं:
SELECT branch, title, COUNT(title) FROM employees GROUP BY branch, title;
हमारे क्वेरी परिणाम सेट दिखाते हैं:
| branch | title | count |
| Stamford | Sales Associate | 1 |
| Albany | Vice President of Sales | 1 |
| San Francisco | Sales Associate | 1 |
| San Francisco | Senior Sales Associate | 1 |
| Albany | Marketing Director | 1 |
| Boston | Sales Associate | 2 |
(6 पंक्तियाँ)
हमारी क्वेरी प्रत्येक कर्मचारी द्वारा धारित टाइटल की सूची बनाती है। हम उस टाइटल को धारण करने वाले लोगों की संख्या देख सकते हैं। हमारा डेटा प्रत्येक कर्मचारी की शाखा और उनके टाइटल द्वारा समूहीकृत है।
निष्कर्ष
SQL GROUP BY क्लॉज किसी भी स्टेटमेंट में आवश्यक है जहां एग्रीगेट फंक्शन का उपयोग किया जाता है और एक अतिरिक्त टेबल क्वेरी की जाती है। आपको एग्रीगेट फंक्शन में उल्लिखित नहीं किए गए कॉलम द्वारा समूहित करना चाहिए।
क्या आप एक चुनौती ढूंढ रहे हैं? एक स्टेटमेंट लिखें जो पता लगाता है कि प्रत्येक शाखा में कितने कर्मचारी काम करते हैं।
टेबल को "employees" कहा जाता है और वह कॉलम जिसमें शाखा नाम संग्रहीत हैं, "branch" है। ऊपर ट्यूटोरियल पर वापस जाएं और देखें कि आपकी क्वेरी हमारे द्वारा चर्चा की गई बातों के आधार पर समझ में आती है या नहीं।
हमने SQL सीखने पर एक संपूर्ण गाइड लिखा है। यह गाइड शुरुआती और उन लोगों के लिए उपयुक्त है जो पहले से ही SQL में महारत हासिल करने की राह पर हैं। इसे हमारे How to Learn SQL पेज पर देखें।