रिलेशनल डेटाबेस की अधिकांश शक्ति डेटा को फ़िल्टर करने और तालिकाओं को एक साथ जोड़ने से आती है। यही कारण है कि हम पहली बार में उन संबंधों का प्रतिनिधित्व करते हैं। लेकिन आधुनिक डेटाबेस सिस्टम एक और मूल्यवान तकनीक प्रदान करते हैं: समूहीकरण।

समूहीकरण आपको एक डेटाबेस से सारांश जानकारी निकालने की अनुमति देता है। यह आपको उपयोगी सांख्यिकीय डेटा बनाने के लिए परिणामों को संयोजित करने देता है। समूहीकरण आपको सामान्य मामलों के लिए कोड लिखने से बचाता है जैसे आंकड़ों की औसत सूची। और यह अधिक कुशल प्रणालियों के लिए बना सकता है।

खण्ड द्वारा समूह क्या करता है?

ग्रुप बीवाई, जैसा कि नाम से पता चलता है, समूह छोटे सेट में परिणत होते हैं। परिणाम समूहीकृत कॉलम के प्रत्येक अलग मूल्य के लिए एक पंक्ति से मिलकर बनता है। हम कुछ सामान्य मूल्यों को साझा करने वाली पंक्तियों के साथ कुछ नमूना डेटा को देखकर इसका उपयोग दिखा सकते हैं।

निम्नलिखित एक बहुत ही सरल डेटाबेस है जिसमें दो एल्बम रिकॉर्ड एल्बम का प्रतिनिधित्व करते हैं। आप इस तरह का डेटाबेस सेट कर सकते हैं एक बुनियादी स्कीमा लिखना आपके चुने हुए डेटाबेस सिस्टम के लिए।

instagram viewer
एलबम तालिका में एक प्राथमिक कुंजी के साथ नौ पंक्तियाँ हैं ईद नाम, कलाकार, रिलीज़ का वर्ष और बिक्री के लिए कॉलम और कॉलम:

++++++
| आईडी | नाम | कलाकार_द | release_year | बिक्री |
++++++
| 1 | अभय रोड | 1 | 1969 | 14 |
| 2 | चंद्रमा का डार्क साइड | 2 | 1973 | 24 |
| 3 | अफवाहें | 3 | 1977 | 28 |
| 4 | कोई बात नहीं | 4 | 1991 | 17 |
| 5 | पशु | 2 | 1977 | 6 |
| 6 | अलविदा पीली ईंट रोड | 5 | 1973 | 8 |
| 7 | 21 | 6 | 2011 | 25 |
| 8 | 25 | 6 | 2015 | 22 |
| 9 | बैट आउट ऑफ़ हेल | 7 | 1977 | 28 |
++++++

कलाकार की तालिका और भी सरल है। इसमें आईडी और नाम कॉलम के साथ सात पंक्तियाँ हैं:

+++
| आईडी | नाम |
+++
| 1 | बीटल्स |
| 2 | गुलाबी फ्लोयड |
| 3 | फ्लीटवुड मैक |
| 4 | निर्वाण |
| 5 | एल्टन जॉन |
| 6 | एडेल |
| 7 | मांस लोफ |
+++

आप इस तरह के रूप में सिर्फ एक साधारण डेटा सेट के साथ ग्रुप BY के विभिन्न पहलुओं को समझ सकते हैं। बेशक, एक वास्तविक जीवन डेटा सेट में कई, कई और पंक्तियाँ होंगी, लेकिन सिद्धांत समान हैं।

एक एकल स्तंभ द्वारा समूहीकरण

मान लीजिए कि हम यह पता लगाना चाहते हैं कि हमारे पास प्रत्येक कलाकार के लिए कितने एल्बम हैं। एक ठेठ के साथ शुरू करो चुनते हैं कलाकार_id कॉलम लाने के लिए क्वेरी:

एल्बमों में से कलाकार का चयन करें

यह उम्मीद के मुताबिक सभी नौ पंक्तियों को लौटाता है:

++
| कलाकार_द |
++
| 1 |
| 2 |
| 3 |
| 4 |
| 2 |
| 5 |
| 6 |
| 6 |
| 7 |
++

कलाकार द्वारा इन परिणामों को समूहित करने के लिए, वाक्यांश को जोड़ दें GROUP BY कलाकार_िद:

एल्बम से कलाकार का चयन करें

जो निम्नलिखित परिणाम देता है:

++
| कलाकार_द |
++
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
++

परिणाम सेट में सात पंक्तियाँ हैं, जो कुल नौ में से कम हो गई हैं एलबम तालिका। प्रत्येक अद्वितीय कलाकार_द एक पंक्ति है। अंत में, वास्तविक मायने रखने के लिए, जोड़ें COUNT (*) चयनित स्तंभों के लिए:

कलाकार का चयन करें, COUNT (*)
एल्बम से
GROUP BY कलाकार_िद
+++
| कलाकार_द | COUNT (*) |
+++
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
| 6 | 2 |
| 7 | 1 |
+++

परिणाम समूह आईडी के साथ कलाकारों के लिए दो जोड़े पंक्तियों का समूह बनाता है 2 तथा 6. हमारे डेटाबेस में प्रत्येक के दो एल्बम हैं।

सम्बंधित: शुरुआती के लिए एसेंशियल एसक्यूएल कमांड चीट शीट

एक अलग कार्य के साथ समूहीकृत डेटा तक कैसे पहुँचें

आपने इस्तेमाल किया होगा गिनती इससे पहले, विशेष रूप से कार्य COUNT (*) जैसा कि ऊपर देखा गया है। यह एक सेट में परिणामों की संख्या प्राप्त करता है। आप तालिका में रिकॉर्ड की कुल संख्या प्राप्त करने के लिए इसका उपयोग कर सकते हैं:

एल्बम से COUNT (*) चुनें
++
| COUNT (*) |
++
| 9 |
++

COUNT एक कुल कार्य है। यह शब्द उन कार्यों को संदर्भित करता है जो कई पंक्तियों से मूल्यों को एक ही मूल्य में अनुवाद करते हैं। उनका उपयोग अक्सर ग्रुप बाय स्टेटमेंट के साथ किया जाता है।

केवल पंक्तियों की संख्या गिनने के बजाय, हम समूहीकृत मानों के लिए एक समुच्चय फ़ंक्शन लागू कर सकते हैं:

कलाकार का चयन करें
एल्बम से
GROUP BY कलाकार_िद
+++
| कलाकार_द | एसयूएम (बिक्री) |
+++
| 1 | 14 |
| 2 | 30 |
| 3 | 28 |
| 4 | 17 |
| 5 | 8 |
| 6 | 47 |
| 7 | 28 |
+++

कलाकारों 2 और 6 के लिए ऊपर दिखाई गई कुल बिक्री उनके कई एल्बमों की बिक्री संयुक्त है:

कलाकार का चयन करें, बिक्री
एल्बम से
कहाँ कलाकार_ में (2, 6)
+++
| कलाकार_द | बिक्री |
+++
| 2 | 24 |
| 2 | 6 |
| 6 | 25 |
| 6 | 22 |
+++

एकाधिक कॉलम द्वारा समूहीकरण

आप एक से अधिक कॉलम द्वारा समूह बना सकते हैं। बस कई कॉलम या भाव शामिल करें, जिन्हें अल्पविराम द्वारा अलग किया गया है। परिणाम इन कॉलमों के संयोजन के अनुसार समूहित होंगे।

सेलेक्ट रिलीज़_आयर, सेल्स, काउंट (*)
एल्बम से
GROUP BY release_year, बिक्री

यह आमतौर पर एकल कॉलम द्वारा समूहीकरण की तुलना में अधिक परिणाम देगा:

++++
| release_year | बिक्री | गिनती (*) |
++++
| 1969 | 14 | 1 |
| 1973 | 24 | 1 |
| 1977 | 28 | 2 |
| 1991 | 17 | 1 |
| 1977 | 6 | 1 |
| 1973 | 8 | 1 |
| 2011 | 25 | 1 |
| 2015 | 22 | 1 |
++++

ध्यान दें कि, हमारे छोटे उदाहरण में, केवल दो एल्बमों में एक ही रिलीज़ वर्ष और बिक्री गणना (1977 में 28) है।

उपयोगी सकल कार्य

COUNT के अलावा, कई फ़ंक्शन GROUP के साथ अच्छी तरह से काम करते हैं। प्रत्येक फ़ंक्शन प्रत्येक परिणाम समूह से संबंधित रिकॉर्ड के आधार पर एक मान लौटाता है।

  • COUNT () मिलान रिकॉर्ड की कुल संख्या लौटाता है।
  • SUM () दिए गए कॉलम में कुल मूल्यों को जोड़ देता है।
  • MIN () दिए गए कॉलम में सबसे छोटा मान लौटाता है।
  • MAX () किसी दिए गए कॉलम में सबसे बड़ा मान लौटाता है।
  • औसत औसत औसत मूल्य देता है। यह SUM () / COUNT () के बराबर है।

आप बिना ग्रुप क्लॉज के भी इन कार्यों का उपयोग कर सकते हैं:

एल्बम से AVG (बिक्री) का चयन करें
++
| AVG (बिक्री) |
++
| 19.1111 |
++

एक समूह के साथ ग्रुप BY का उपयोग करना

बस एक सामान्य चयन के साथ, आप परिणाम सेट करने के लिए WHERE का उपयोग कर सकते हैं:

कलाकार का चयन करें, COUNT (*)
एल्बम से
व्हेयर रिलीज़_यियर> 1990
GROUP BY कलाकार_िद
+++
| कलाकार_द | COUNT (*) |
+++
| 4 | 1 |
| 6 | 2 |
+++

अब आपके पास केवल उन एल्बमों को जारी किया गया है जो 1990 के बाद कलाकार द्वारा समूहीकृत किए गए हैं। आप ग्रुप से स्वतंत्र रूप से WHERE क्लॉज के साथ एक जॉइन का भी उपयोग कर सकते हैं:

चयनित एल्बमों, COUNT (*) AS एल्बमों का चयन करें
एल्बम एल से, कलाकार आर
WHERE कलाकार_िद = r.id
और रिलीज़_यियर> 1990
GROUP BY कलाकार_िद
+++
| नाम | एल्बम |
+++
| निर्वाण | 1 |
| एडेल | 2 |
+++

हालाँकि, ध्यान दें कि यदि आप एक एकीकृत कॉलम के आधार पर फ़िल्टर करने का प्रयास करते हैं:

चयनित एल्बमों, COUNT (*) AS एल्बमों का चयन करें
एल्बम एल से, कलाकार आर
WHERE कलाकार_िद = r.id
और एल्बम> 2
GROUP BY कलाकार_आईडी;

आपको एक त्रुटि मिलेगी:

ERROR 1054 (42S22): अज्ञात कॉलम 'एल्बम' में 'जहां खंड'

कुल डेटा पर आधारित कॉलम WHERE के क्लॉज के लिए उपलब्ध नहीं हैं।

HAVING क्लॉज का उपयोग करना

तो, आप समूहन के बाद परिणाम सेट को कैसे फ़िल्टर करते हैं? होने इस आवश्यकता से संबंधित है:

चयनित एल्बमों, COUNT (*) AS एल्बमों का चयन करें
एल्बम एल से, कलाकार आर
WHERE कलाकार_िद = r.id
GROUP BY कलाकार_िद
एल्बम> 1;

ध्यान दें कि ग्रुप BY के बाद HAVING क्लॉज आता है। अन्यथा, यह अनिवार्य रूप से WHERE का HAVING के साथ एक साधारण प्रतिस्थापन है। परिणाम हैं:

+++
| नाम | एल्बम |
+++
| गुलाबी फ्लोयड | 2 |
| एडेल | 2 |
+++

समूहीकरण से पहले परिणाम फ़िल्टर करने के लिए आप अभी भी WHERE की स्थिति का उपयोग कर सकते हैं। यह समूहीकरण के बाद फ़िल्टरिंग के लिए एक HAVING खंड के साथ मिलकर काम करेगा:

चयनित एल्बमों, COUNT (*) AS एल्बमों का चयन करें
एल्बम एल से, कलाकार आर
WHERE कलाकार_िद = r.id
और रिलीज़_यियर> 1990
GROUP BY कलाकार_िद
एल्बम> 1;

हमारे डेटाबेस में केवल एक कलाकार ने 1990 के बाद एक से अधिक एल्बम जारी किए:

+++
| नाम | एल्बम |
+++
| एडेल | 2 |
+++

समूह द्वारा परिणाम के साथ संयोजन

ग्रुप बाय स्टेटमेंट SQL भाषा का एक अविश्वसनीय रूप से उपयोगी हिस्सा है। यह उदाहरण के लिए, सामग्री पृष्ठ के लिए डेटा की सारांश जानकारी प्रदान कर सकता है। यह बड़ी मात्रा में डेटा लाने के लिए एक उत्कृष्ट विकल्प है। डेटाबेस इस अतिरिक्त कार्यभार को अच्छी तरह से संभालता है क्योंकि इसका बहुत ही डिज़ाइन इसे नौकरी के लिए इष्टतम बनाता है।

एक बार जब आप समूहीकरण और कई तालिकाओं में शामिल होने का तरीका समझ जाते हैं, तो आप एक रिलेशनल डेटाबेस की अधिकांश शक्ति का उपयोग करने में सक्षम होंगे।

ईमेल
SQL जॉइन के साथ एक बार में कई डेटाबेस टेबल्स को कैसे क्वेरी करें

क्वेरी को स्ट्रीमलाइन करने, समय बचाने और SQL पावर उपयोगकर्ता की तरह महसूस करने के लिए SQL जॉइन का उपयोग करना सीखें।

संबंधित विषय
  • प्रोग्रामिंग
  • एसक्यूएल
लेखक के बारे में
बॉबी जैक (28 लेख प्रकाशित)

बॉबी एक प्रौद्योगिकी उत्साही है जिसने अधिकांश दो दशकों के लिए सॉफ्टवेयर डेवलपर के रूप में काम किया है। वह गेमिंग के बारे में भावुक है, स्विच प्लेयर मैगज़ीन में समीक्षा संपादक के रूप में काम कर रहा है, और ऑनलाइन प्रकाशन और वेब विकास के सभी पहलुओं में डूबा हुआ है।

बॉबी जैक से अधिक

हमारे न्यूज़लेटर की सदस्यता लें

टेक टिप्स, समीक्षा, मुफ्त ईबुक और विशेष सौदों के लिए हमारे न्यूज़लेटर में शामिल हों!

एक और कदम…!

कृपया हमें आपके द्वारा भेजे गए ईमेल में अपने ईमेल पते की पुष्टि करें।

.