यात शंका नाही की एसक्यूएल हे एक आवश्यक कौशल्य आहे, – प्रत्येक प्रोग्रामर, डेव्हलपर, डेवॉप्स – व्यवसाय विश्लेषकांना एसक्यूएल माहित असणे आवश्यक आहे. जर तुम्हाला सुरवातीपासून SQL शिकायचे असेल तर तुम्ही योग्य ठिकाणी आला आहात. मी ते आधीही बर्‍याच लोकांशी शेअर केले आहे SQL मुलाखत प्रश्न आणि नवशिक्यांसाठी सर्वोत्तम SQL अभ्यासक्रमs, և आज, मी एकत्रीकरण क्वेरी लिहिण्यासाठी SQL मधील उदाहरणांद्वारे काही GROPU शेअर करणार आहे. SQL ची GROUP BY आयटम कोणत्याही प्रोग्रामरसाठी एक शक्तिशाली कमांड लाइन आहे. आम्ही सहसा GROUP BY कमांडचा वापर रिपोर्टिंग हेतूसाठी निवडलेल्या आयटमच्या संयोगाने करतो, कारण GROUP BY आयटमचा वापर प्रामुख्याने गट संबंधित डेटासाठी केला जातो.
बर्‍याच क्वेरी ज्यांना एकूण कार्याचा वापर आवश्यक आहे जसे की: रक्कम (), मध्यम (), किंवा: गणना () GROUP BY आयटम वापरून डेटाचे गट करणे आवश्यक आहे. एसक्यूएल क्वेरी ज्यात समाविष्ट आहे: संपर्क: आणि आहेत: ज्यांना व्यावहारिक एसक्यूएल अनुभव नाही आणि बऱ्याचदा एसक्यूएल मुलाखत प्रश्न फिल्टरिंग म्हणून वापरले जातात अशा अनेक प्रोग्रामरसाठी हे मुद्दे थोडे गोंधळात टाकणारे आहेत.
या लेखात, आम्ही SQL मधील GROUP BY वाक्याची काही उदाहरणे पाहू जेणेकरून आपल्याला बिंदूनुसार गट कोठे वापरावा आणि ग्रुप BY SELECT च्या संयोगाने कसा वापरावा हे समजण्यास मदत होईल. आपण GROUP BY स्टेटमेंटशी संबंधित SQL नियम देखील शिकू शकाल, जे काही डेटाबेसमध्ये उपलब्ध आहे, विशेषत: MySQL, विस्तारांसह एक गट म्हणून.

5 एसक्यूएल ग्रुप बाय և नवशिक्यांसाठी उदाहरणे

आता कृती द्वारे गट BY पाहण्याची वेळ आली आहे. आपण डेटा एकत्रित करण्यासाठी GRYP BY कसा वापरू शकता आणि नंतर HAVING वापरून एकत्रित किंवा गटबद्ध डेटावर फिल्टरिंग लागू करू शकता याची काही उदाहरणे येथे आहेत.

1. आयटमनुसार गट उदाहरण 1 – दुहेरी शोध

GROUP BY आयटमचा लोकप्रिय वापर म्हणजे डेटाबेसमध्ये डुप्लिकेट रेकॉर्ड शोधणे. SQL क्वेरी नंतर डुप्लिकेट कर्मचारी प्रदर्शित केले जातील

mysql> select emp_name, count(emp_name) 
       from employee group by emp_name having count(emp_name)>1;
+----------+-----------------+
| emp_name | count(emp_name) |
+----------+-----------------+
| James    |               2 |
+----------+-----------------+
1 row in set (0.00 sec)

डेटाबेसमध्ये डुप्लिकेट नोंदी शोधण्याचे हे अगदी सोपे उदाहरण आहे. जर तुम्हाला एक कर्मचारी एकापेक्षा जास्त क्षेत्रावर आधारित डुप्लीकेट आहे का हे ठरवायचे असेल, तर तुम्ही समूहामध्ये विरुद्ध असलेल्या सर्वांना समाविष्ट करू शकता, अन्यथा तुम्हाला चुकीची गणना होईल. तुम्ही माझा लेख नंतर पाहू शकता डेटाबेसमध्ये डुप्लिकेट नोंदी कशा शोधायच्या अधिक माहितीसाठी.

2. आयटमनुसार गट करा उदाहरण 2 – रकमेची गणना करा

गटाचे आणखी एक सुप्रसिद्ध उदाहरण, बिंदूनुसार, एक सकल कार्य वापरते जसे की: रक्कम () आणि मध्यम ()तुम्हाला माहिती असल्यास, SQL GROUP BY तुम्हाला प्रत्येक विभाग आपल्या कर्मचाऱ्यांना किती पगार देतो, म्हणजे एका विभागाचा एकूण पगार यासारख्या प्रश्न विचारण्यास परवानगी देतो.

एका विभागासाठी एकूण पगार शोधण्यासाठी, एसक्यूएल क्वेरी लिहिण्यासाठी, आम्हाला विभाग. वापरानुसार गट करणे आवश्यक आहे रक्कम (पगार) निवडलेल्या सूचीमध्ये, खालील SQL क्वेरीमध्ये दाखवल्याप्रमाणे:

mysql> select dept_id, sum(salary) as total_salary from employee group by dept_id;
+---------+--------------+
| dept_id | total_salary |
+---------+--------------+
|       1 |         3200 |
|       2 |         2850 |
|       3 |         2200 |
|       4 |         2250 |
+---------+--------------+
4 rows in set (0.00 sec)

त्यानंतर तुम्ही चौकशी करण्यासाठी गुणांचा वापर करून रेकॉर्ड अधिक परिष्कृत करू शकता, उदाहरणार्थ, ज्या विभागांची एकूण पगाराची किंमत 3,000 पेक्षा जास्त आहे ते शोधण्यासाठी. त्यासाठी SQL क्वेरी येथे आहे.

mysql> select dept_id, sum(salary) as total_salary
       from employee group by dept_id having sum(salary) > 3000;
+---------+--------------+
| dept_id | total_salary |
+---------+--------------+
|       1 |         3200 |
+---------+--------------+
1 row in set (0.01 sec)

हा तुमच्या पगाराचा सर्वात महागडा भाग आहे. आपल्याला उपयुक्त एकूण कार्य माहित असणे आवश्यक आहे, जसे की गणना արը बेरीज, जर आपण त्यांच्याशी परिचित नसल्यास, मी तुम्हाला सामील होण्याचा सल्ला देतो एसक्यूएल कोर्स प्रास्ताविक मार्गदर्शक एज्युकेटिव्ह वर, एक परस्परसंवादी लर्निंग प्लॅटफॉर्म जे आपल्याला SQL ब्राउझरमध्ये सराव करण्याची परवानगी देते.

3. गट वापरून सरासरी मूल्याची गणना कशी करावी

मागील गटाप्रमाणे, उदाहरणार्थ, त्याऐवजी रक्कम () आम्ही ते वापरू शकतो! मध्यम () चौकशी करा जसे की: प्रत्येक विभागातील कर्मचाऱ्यांचे सरासरी वेतन निश्चित करणे“पुन्हा एकदा आम्हाला विभागानुसार गट करावा लागेल – या वेळी रक्कम () एकूण कार्य जे आम्हाला वापरणे आवश्यक आहे मध्यम () उप-क्वेरीमध्ये दर्शविल्याप्रमाणे कार्य करा.

mysql> select dept_id, avg(salary) as average_salary from employee group by dept_id;
+---------+----------------+
| dept_id | average_salary |
+---------+----------------+
|       1 |      1066.6667 |
|       2 |      1425.0000 |
|       3 |      1100.0000 |
|       4 |       750.0000 |
+---------+----------------+
4 rows in set (0.00 sec)

त्याचप्रमाणे, हा परिणाम तुम्हाला नंतर रिफाइन करण्यासाठी तुम्हाला वापरता येईल, जसे की सरासरी $ 1,000 पेक्षा कमी पगार असलेली एजन्सी शोधणे. त्यासाठी SQL क्वेरी येथे आहे.

mysql> select dept_id, avg(salary) as average_salary 
       from employee group by dept_id having avg(salary) < 1000;
+---------+----------------+
| dept_id | average_salary |
+---------+----------------+
|       4 |       750.0000 |
+---------+----------------+
1 row in set (0.00 sec)

हा तुमचा सर्वात वाईट पेड भाग आहे. आता तुम्हाला सांगण्यात काही अर्थ नाही – मला आश्चर्य नष्ट करायचे नाही.

4. उदाहरणानुसार गट 4 – रेकॉर्ड

सकल कार्यासारखे रक्कम () आणि मध्यम (), लेखा नोंदींप्रमाणे, आणखी एक प्रकारची एकूण क्वेरी खूप सामान्य आहे. सर्वेक्षणाद्वारे या प्रकारच्या गटाचे उदाहरण एका विभागात कर्मचाऱ्यांची संख्या कशी शोधायची. या प्रकरणात आम्हाला विभागानुसार गटबद्ध करावे लागेल – आम्हाला वापरावे लागेल गणना () खालील एसक्यूएल क्वेरी मध्ये दाखवल्याप्रमाणे सामान्य कर्मचारी गणना फंक्शन.

mysql>  select dept_id, count(emp_id) as number_of_employees 
         from employee group by dept_id;
+---------+---------------------+
| dept_id | number_of_employees |
+---------+---------------------+
|       1 |                   3 |
|       2 |                   2 |
|       3 |                   2 |
|       4 |                   3 |
+---------+---------------------+
4 rows in set (0.00 sec)

वापरताना: गणना () SQL मध्ये कार्य करते, त्यांच्यातील फरक लक्षात घेतला पाहिजे गणना () आणि गणना (फील्ड) आपण कोणत्या स्तंभाची मोजणी करत आहात, त्या स्तंभात शून्य आहे की नाही यावर आधारित वेगवेगळी गणिते देऊ शकतात.

फक्त लक्षात ठेवा गणना () हे स्तंभातील शून्य मूल्यांची गणना करते. SQL मध्ये NULLs अतिशय अनोखे आहेत – तुम्हाला Null कसे वापरायचे ते चांगले माहित असणे आवश्यक आहे – त्यांची तुलना कशी करावी.

5. एकापेक्षा जास्त स्तंभांसह ग्रुप बाय कसे वापरावे

बहुतेक व्यावहारिक प्रकरणांमध्ये, आम्ही एकापेक्षा जास्त स्तंभांचा समूह वापरतो. ठिपक्यांच्या क्रमाने एका गटात दोन किंवा तीन स्तंभ वापरणे फार महत्वाचे आहे. बिंदू असलेल्या गटात येणारा पहिला स्तंभ प्रथम गटबद्ध केला जाईल, नंतर दुसरा स्तंभ त्या गटाला गट करण्यासाठी वापरला जाईल. उदाहरणार्थ, SQL क्वेरी परिणामांचा खालील संच प्रथम गटबद्ध केला आहे: dept_id: և मग և प्रत्येक गट पुन्हा गटबद्ध केला जातो emp_id:,

mysql> select dept_id, emp_id from employee group by dept_id, emp_id;
+---------+--------+
| dept_id | emp_id |
+---------+--------+
|       1 |    101 |
|       1 |    102 |
|       1 |    110 |
|       2 |    103 |
|       2 |    104 |
|       3 |    105 |
|       3 |    108 |
|       4 |    106 |
|       4 |    107 |
|       4 |    109 |
+---------+--------+
10 rows in set (0.00 sec)

प्रति गट अनेक स्तंभ वापरण्याचे आणखी एक उदाहरण म्हणजे स्प्रेडशीटमध्ये डुप्लिकेट नोंदी शोधणे, जिथे पोस्टला डुप्लीकेट म्हणण्यासाठी आपण आवश्यक असलेले सर्व स्तंभ वापरणे आवश्यक आहे. आपण अशा प्रगत एसक्यूएल संकल्पनांचा अधिक वापर करू इच्छित असल्यास, मी त्याची अत्यंत शिफारस करतो पूर्ण SQL + डेटाबेस बूट कॅम्प: शून्य ते प्रभुत्व: झेडटीएम अकादमीमध्ये आंद्रे नेगाओ कोर्स. हा सर्वात व्यापक एसक्यूएल शिक्षण अभ्यासक्रमांपैकी एक आहे.

नवशिक्यांसाठी सर्वोत्तम एसक्यूएल शिक्षण कोर्स

एस क्यू एल ग्रुप बद्दल महत्वाचे मुद्दे

आता पुनरावलोकन करण्याची वेळ आली आहे – एसक्यूएल स्टेटमेंटमध्ये ग्रुप बाय द्वारे काही महत्त्वाच्या गोष्टी.

1. आपण a वापरू शकत नाही न गोळा केलेला स्तंभ निवडलेल्या यादीतील नाव जर गटाने वापरला नसेल तर. उदाहरणार्थ, SQL क्वेरी पुनर्प्राप्त करणे बेकायदेशीर आहे work कार्य करणार नाही कारण त्याने emp_id निवडलेल्या सूचीमध्ये emp_id स्तंभ वापरला आहे, जो केवळ या SQL क्वेरीमध्ये गट बाय मध्ये सूचीबद्ध नाही. dept_id: आयटमनुसार गटात वापरले.

mysql> select emp_id, dept_id, max(salary) 
       from employee 
       group by dept_id;

ERROR 1055 (42000): 'test.employee.emp_id' isn't in GROUP BY

परंतु: MySQL डेटाबेस ONLY_FULL_GROUP_BY SQL मोड सक्षम करून वरील परिस्थितीत अक्षम केलेल्या विस्तार फंक्शनसह त्याच्या गटाद्वारे त्याला अनुमती देते.

2. स्टँडर्ड एसक्यूएल मध्ये, आपल्याकडे अज्ञात स्तंभ नावाचा स्तंभ असू शकत नाही जो एका गटात बिंदूनुसार वापरला जात नाही, मायएसक्यूएल डेटाबेस देखील त्याला विस्ताराने मागील गटासारखे दिसू देतो. एसक्यूएल क्वेरी पुनर्प्राप्त करणे अवैध आहे कारण आम्ही max_salary वापरतो ज्याचा एक बिंदू गटांमध्ये वापरला जात नाही.

mysql> select  dept_id, max(salary) as max_salary 
       from employee 
       group by dept_id having max_salary > 1000;

ERROR 1463 (42000): Non-grouping field 'max_salary' is used in HAVING clause

3. मानक SQL मध्ये बिंदू-दर-बिंदू वापरण्यासाठी दुसरा नियम आहे HAVING तरतुदीमध्ये टोपणनाव वापरू शकत नाही, मागील SQL क्वेरी देखील नियम म्हणून या गटाचे उदाहरण आहे. MySQL डेटाबेसमध्ये देखील याची परवानगी आहे.

आपण ONSY_FULL_GROUP_BY SQL मोड द्वारे विस्तार फंक्शनांसह MySQL गट अक्षम करू शकता MySQL:तुम्ही MySQL कमांड लाइनमधून SQL मोड बदलण्यासाठी खालील MySQL आज्ञा वापरू शकता.

mysql> SET GLOBAL sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,
           NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY";
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@GLOBAL.sql_mode;
+-----------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                 |
+-----------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

तुम्ही खालील क्लायबल सत्राऐवजी SESSION या शब्दाचा वापर करून MySQL SQL मोड सेट करू शकता.

mysql> SET SESSION sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,
             NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY";
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@GLOBAL.sql_mode;
+-----------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                 |
+-----------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

हे इतकेच आहे की जागतिक स्तरावर मायएसक्यूएल एसक्यूएल मोड बदलणे आपण नवीन सत्र सुरू करेपर्यंत चालू सत्रात प्रभावी होणार नाही. वरील क्वेरी वापरून चालू MySQL सत्रात ONLY_FULL_GROUP_BY सक्षम करण्यासाठी.

येथे सर्व गटांची काही उदाहरणे आहेत – या गटातील जी आपण या लेखात पाहिली आहेत.

नवशिक्यांसाठी उदाहरणासह SQL ग्रुप BY

एवढेच आहे SQL क्वेरींमधील ग्रुप बाय आयटमचे उदाहरण:, GROUP BY आज्ञा कोठे वापरायची ते आम्ही पाहिले և SQL मधील डेटा ग्रुप करण्यासाठी ग्रुप BY स्टेटमेंट कसे वापरावे. जसे मी म्हटल्याप्रमाणे, ग्रूप बाय बाय-हॅविंग स्टेटमेंट हे कोणत्याही प्रोग्रामरसाठी असणे आवश्यक आहे, कारण हे एसक्यूएल जगात अगदी सामान्य आहे-विशेषतः अहवाल देण्याच्या हेतूंसाठी उपयुक्त.

इतर: एसक्यूएल և डेटाबेस लेख: तुम्हाला आवडेल

  • शीर्ष 5 SQL मोफत शिक्षण साइट्स (साइट्स:)
  • माझे आवडते SQL և डेटाबेस शिक्षण अभ्यासक्रम (अभ्यासक्रम)
  • नवशिक्यांसाठी शीर्ष 5 पोस्टग्रेएसक्यूएल प्रशिक्षण अभ्यासक्रम (अभ्यासक्रम)
  • 10 SQL मुलाखत प्रश्न (चौकश्या)
  • मायक्रोसॉफ्ट एसक्यूएल सर्व्हर शिकण्यासाठी शीर्ष 5 अभ्यासक्रम (अभ्यासक्रम)
  • Q SQL डेटाबेस शिकण्यासाठी 5 विनामूल्य अभ्यासक्रम (अभ्यासक्रम)
  • SQL चांगले शिकण्यासाठी 5 पुस्तके (पुस्तके)
  • एका क्वेरीमध्ये दोनपेक्षा जास्त टेबल कसे जोडायचे (लेख:)
  • ओरॅकल և एसक्यूएल सर्व्हर शिकण्यासाठी 10 मोफत अभ्यासक्रम (अभ्यासक्रम)
  • नवशिक्यांसाठी शीर्ष 5 MySQL शिक्षण अभ्यासक्रम
  • कोठे फरक आहे P पॉइंट्स आहेत (उत्तर:)
  • प्रगत प्रोग्रामरसाठी 5 अग्रगण्य SQL पुस्तके (पुस्तके)
  • SQL, T-SQL և PL / SQL between मधील फरक. (उत्तर:)
  • MySQL डेटाबेस शिकण्यासाठी 5 विनामूल्य अभ्यासक्रम (अभ्यासक्रम)
  • शीर्ष 5 ऑनलाइन SQL սովոր डेटाबेस अभ्यासक्रम (अभ्यासक्रम)

जर तुम्हाला हा एसक्यूएल ग्रुप सापडला तर हा लेख वाचल्याबद्दल धन्यवाद उदाहरणे: उपयुक्त, नंतर कृपया त्यांना आपल्या मित्रांसह – सहकार्यांसह सामायिक करा. आपल्याकडे काही प्रश्न किंवा टिप्पण्या असल्यास, कृपया एक टीप सोडा.

पुनश्च – जर तुम्ही SQL मध्ये नवीन असाल – मूलभूत गोष्टी शिकण्यासाठी विनामूल्य SQL դաս डेटाबेस कोर्स शोधत असाल, तर मी तुम्हाला वगळा डेटाबेसची व्हॅस्क्युलरिटी և एसक्यूएल क्वेरी उडेमी वर अभ्यासक्रम. हे पूर्णपणे विनामूल्य आहे, आपल्याला फक्त एक उडेमी खाते तयार करायचे आहे – आपण संपूर्ण कोर्समध्ये प्रवेश करू शकता.