खण्ड द्वारा SQL समूह क्या है?
ग्रुप बाय क्लॉज एक एसक्यूएल कमांड है जो कि एक ही मान वाले समूह पंक्तियों के लिए उपयोग किया जाता है । ग्रुप बाय क्लॉज का उपयोग सेलेक्ट स्टेटमेंट में किया जाता है। वैकल्पिक रूप से इसका उपयोग डेटाबेस से सारांश रिपोर्ट तैयार करने के लिए कुल कार्यों के संयोजन में किया जाता है।
यही वह है, जो डेटाबेस से डेटा को सारांशित करता है ।
ग्रुप बाय क्लॉज वाले प्रश्नों को समूहीकृत क्वेरी कहा जाता है और केवल प्रत्येक समूहीकृत आइटम के लिए एक ही पंक्ति लौटाती है।
एसक्यूएल ग्रुप बाय सिंटैक्स
अब जब हम जानते हैं कि SQL ग्रुप BY क्लॉज क्या है, तो आइए क्वेरी द्वारा एक मूल समूह के सिंटैक्स को देखें।
SELECT statements… GROUP BY column_name1[,column_name2,… ] [HAVING condition];
यहां
- "SELECT स्टेटमेंट्स ..." मानक SQL SELECT कमांड क्वेरी है।
- " GROUP BY column_name1" वह खंड है जो कॉलम_name1 के आधार पर समूहीकरण करता है।
- "(, column_name2,…]" वैकल्पिक है; जब एक से अधिक स्तंभ पर समूहीकरण किया जाता है, तो अन्य स्तंभ नामों का प्रतिनिधित्व करता है।
- "" HAVING की स्थिति] "वैकल्पिक है; इसका उपयोग GROUP BY क्लॉज से प्रभावित पंक्तियों को प्रतिबंधित करने के लिए किया जाता है। यह WHERE क्लॉज के समान है।
एकल कॉलम का उपयोग करके समूह बनाना
एसक्यूएल ग्रुप बाय क्लॉज़ के प्रभाव को समझने में मदद करने के लिए, आइए एक सरल क्वेरी को निष्पादित करें, जो सदस्यों की तालिका से सभी लिंग प्रविष्टियों को लौटाती है।
SELECT `gender` FROM `members` ;
gender |
---|
Female |
Female |
Male |
Female |
Male |
Male |
Male |
Male |
Male |
मान लीजिए कि हम जेंडर के लिए अद्वितीय मूल्य प्राप्त करना चाहते हैं। हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं -
SELECT `gender` FROM `members` GROUP BY `gender`;
MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें निम्नलिखित परिणाम मिलते हैं।
gender |
---|
Female |
Male |
नोट केवल दो परिणाम लौटाए गए हैं। ऐसा इसलिए है क्योंकि हमारे पास केवल दो लिंग प्रकार हैं पुरुष और महिला। SQL में समूह BY क्लॉज़ ने सभी "पुरुष" सदस्यों को एक साथ समूहीकृत किया और इसके लिए केवल एक पंक्ति लौटा दी। "महिला" सदस्यों के साथ भी ऐसा ही हुआ।
कई स्तंभों का उपयोग करके समूह बनाना
मान लीजिए कि हम मूवी श्रेणी_ की सूची प्राप्त करना चाहते हैं और इसी वर्ष जिसमें वे जारी किए गए थे।
आइए इस सरल क्वेरी के आउटपुट का निरीक्षण करें
SELECT `category_id`,`year_released` FROM `movies` ;
category_id | year_released |
---|---|
1 | 2011 |
2 | 2008 |
NULL | 2008 |
NULL | 2010 |
8 | 2007 |
6 | 2007 |
6 | 2007 |
8 | 2005 |
NULL | 2012 |
7 | 1920 |
8 | NULL |
8 | 1920 |
उपरोक्त परिणाम में कई डुप्लिकेट हैं।
चलिए SQL द्वारा समूह का उपयोग करके उसी क्वेरी को निष्पादित करते हैं -
SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;
Myflixdb के खिलाफ MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को निष्पादित करने से हमें नीचे दिखाए गए निम्न परिणाम मिलते हैं।
category_id | year_released |
---|---|
NULL | 2008 |
NULL | 2010 |
NULL | 2012 |
1 | 2011 |
2 | 2008 |
6 | 2007 |
7 | 1920 |
8 | 1920 |
8 | 2005 |
8 | 2007 |
ग्रुप बीओ क्लॉज हमारे उपरोक्त उदाहरण में अद्वितीय पंक्तियों की पहचान करने के लिए जारी की गई श्रेणी आईडी और वर्ष दोनों पर काम करता है ।
यदि श्रेणी आईडी समान है लेकिन जारी की गई वर्ष अलग है, तो एक पंक्ति को एक अद्वितीय के रूप में माना जाता है। यदि श्रेणी आईडी और जारी किया गया वर्ष एक से अधिक पंक्ति के लिए समान है, तो इसे एक डुप्लिकेट माना जाता है और केवल एक पंक्ति दिखाई जा रही है।
समूहीकरण और समग्र कार्य
मान लीजिए कि हम अपने डेटाबेस में पुरुषों और महिलाओं की कुल संख्या चाहते हैं। हम ऐसा करने के लिए नीचे दी गई स्क्रिप्ट का उपयोग कर सकते हैं।
SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;
MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें निम्नलिखित परिणाम मिलते हैं।
gender | COUNT('membership_number') |
---|---|
Female | 3 |
Male | 5 |
नीचे दिखाए गए परिणाम पोस्ट किए गए प्रत्येक अद्वितीय लिंग मान द्वारा वर्गीकृत किए गए हैं और समूहित पंक्तियों की संख्या COUNT कुल फ़ंक्शन का उपयोग करके गिना जाता है।
एचएवी क्लॉज का उपयोग करके क्वेरी परिणामों को प्रतिबंधित करना
यह हमेशा नहीं होता है कि हम किसी तालिका में सभी डेटा पर समूह बनाना चाहते हैं। ऐसे समय होंगे जब हम अपने परिणामों को एक निश्चित मानदंड तक सीमित रखना चाहेंगे। ऐसे मामलों में, हम HAVING क्लॉज का उपयोग कर सकते हैं
मान लीजिए कि हम फिल्म श्रेणी आईडी 8 के लिए सभी रिलीज वर्षों को जानना चाहते हैं। हम अपने परिणामों को प्राप्त करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग करेंगे।
SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;
MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें नीचे दिखाए गए निम्न परिणाम मिलते हैं।
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
9 | Honey mooners | John Schultz | 2005 | 8 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
कृपया ध्यान दें कि श्रेणी आईडी 8 वाली फिल्में हमारे ग्रुप बीओ क्लॉज से प्रभावित हुई हैं।
सारांश
- ग्रुप बाय क्लॉज एसक्यूएल का उपयोग समान मानों वाली पंक्तियों को समूहित करने के लिए किया जाता है।
- ग्रुप बाय क्लॉज का उपयोग SQL सेलेक्ट स्टेटमेंट के साथ किया जाता है।
- ग्रुप बाय क्लॉज में उपयोग किए गए सेलेक्ट स्टेटमेंट में केवल कॉलम के नाम, एग्रीगेट फंक्शन्स, कॉन्स्टेंट और एक्सप्रेशंस का उपयोग किया जा सकता है।
- SQL BY क्लॉज का उपयोग ग्रुप BY क्लॉज द्वारा लौटाए गए परिणामों को प्रतिबंधित करने के लिए किया जाता है।
- MYSQL ग्रुप बाय क्लॉज का उपयोग कई रिकॉर्ड्स से डेटा एकत्र करने और एक या अधिक कॉलम द्वारा सेट किए गए रिकॉर्ड को वापस करने के लिए किया जाता है।