जवाबों:
आदेश द्वारा आइटम को वापस कर दिया जाता है जिसमें आदेश बदल देता है।
ग्रुप BY निर्दिष्ट स्तंभों द्वारा रिकॉर्ड एकत्र करेगा, जो आपको गैर-समूहित कॉलम (जैसे SUM, COUNT, AVG, आदि) पर एकत्रीकरण कार्य करने की अनुमति देता है।
आदेश द्वारा आइटम को वापस कर दिया जाता है जिसमें आदेश बदल देता है।
ग्रुप BY निर्दिष्ट स्तंभों द्वारा रिकॉर्ड एकत्र करेगा, जो आपको गैर-समूहित कॉलम (जैसे SUM, COUNT, AVG, आदि) पर एकत्रीकरण कार्य करने की अनुमति देता है।
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
age
कॉलम है, जिसमें पीटर्स अलग-अलग उम्र के हैं और क्वेरी सेलेक्ट नेम, एजी फ्रॉम टिल ग्रुप बाय नेम?
आदेश द्वारा: आरोही या अवरोही क्रम में डेटा को सॉर्ट करें।
ग्राहक तालिका पर विचार करें :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
निम्नलिखित एक उदाहरण है, जो NAME द्वारा बढ़ते क्रम में परिणाम को क्रमबद्ध करेगा:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
यह निम्नलिखित परिणाम उत्पन्न करेगा:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
ग्रुप बाय: समूहों में समान डेटा की व्यवस्था करें।
अब, ग्राहक तालिका में डुप्लिकेट नामों के साथ निम्नलिखित रिकॉर्ड हैं:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
यदि आप समान नामों को एकल नाम में समूहित करना चाहते हैं, तो ग्रुप बाय क्वेरी निम्नानुसार होगी:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
यह निम्नलिखित परिणाम देगा: (समान नामों के लिए यह अंतिम एक को उठाएगा और अंत में आरोही क्रम में कॉलम को छाँटेगा)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
जैसा कि आपने अनुमान लगाया है कि यह एसक्यूएल फ़ंक्शन जैसे योग, एवीजी आदि के बिना किसी काम का नहीं है।
इसलिए ग्रुप बाय के उचित उपयोग को समझने के लिए इस परिभाषा को देखें:
एक समूह द्वारा खंड एक एकल / अलग समूह में समान पंक्तियों को सारांशित करके एक क्वेरी द्वारा लौटाए गए पंक्तियों पर काम करता है और प्रत्येक समूह के लिए सारांश के साथ एक एकल पंक्ति का चयन करता है, जैसे कि COECT (), सुमेत सूची में उपयुक्त एग्रिगेट फ़ंक्शन का उपयोग करके। (), MIN (), MAX (), AVG (), आदि।
अब, यदि आप प्रत्येक ग्राहक (नाम) पर वेतन की कुल राशि जानना चाहते हैं, तो ग्रुप बाय क्वेरी निम्नानुसार होगी:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
यह निम्नलिखित परिणाम देगा: समान नामों के वेतन का योग (समान नाम हटाने के बाद NAME कॉलम को सॉर्ट करना)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
अंतर बिल्कुल वही है जो नाम का अर्थ है: एक समूह एक समूह संचालन करता है, और क्रम से एक आदेश।
यदि आप करते हैं SELECT * FROM Customers ORDER BY Name
तो आपको ग्राहकों के नाम के अनुसार परिणाम सूची मिलती है।
यदि आप SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
सक्रिय और निष्क्रिय ग्राहकों की गिनती प्राप्त करते हैं समूह ने आपके द्वारा निर्दिष्ट फ़ील्ड के आधार पर परिणामों को एकत्र किया।
वे पूरी तरह से अलग अर्थ रखते हैं और वास्तव में बिल्कुल संबंधित नहीं हैं।
ORDER BY आपको विभिन्न मानदंडों के अनुसार सेट किए गए परिणाम को क्रमबद्ध करने की अनुमति देता है, जैसे कि पहले नाम से az, फिर उच्चतम से सबसे कम कीमत के अनुसार क्रमबद्ध करें।
(आदेश नाम से, मूल्य DESC)
ग्रुप बीवाई आपको अपना परिणाम सेट करने की अनुमति देता है, इसे तार्किक समूहों में समूहित करें और फिर उन समूहों पर समग्र प्रश्नों को चलाएं। उदाहरण के लिए, आप सभी कर्मचारियों का चयन कर सकते हैं, उन्हें उनके कार्यस्थल के स्थान के अनुसार समूहित कर सकते हैं और प्रत्येक कार्यस्थल के सभी कर्मचारियों के औसत वेतन की गणना कर सकते हैं।
सरल, ORDER BY
डेटा और GROUP BY
समूहों को आदेश देता है , या डेटा को जोड़ता है।
ORDER BY
परिणाम के अनुसार निर्धारित क्षेत्र के अनुसार, क्रम से बढ़ते क्रम में।
मान लीजिए कि आप किसी क्वेरी को फायर कर रहे हैं ORDER BY (student_roll_number)
, तो यह आपको छात्र के रोल नंबर के आरोही क्रम में दिखाएगा। यहां, student_roll_number
प्रविष्टि एक से अधिक बार हो सकती है।
में GROUP BY
मामला है, हम कुल कार्यों के साथ इस का उपयोग, और यह समूहों में समेकित फ़ंक्शन के अनुसार आंकड़ों, और हम परिणाम मिलता है। यहां, यदि हमारी क्वेरी SUM (marks)
के साथ है तो GROUP BY (student_first_name)
यह प्रत्येक समूह से संबंधित छात्रों के अंकों का योग दिखाएगा (जहां एक समूह के सभी सदस्यों का पहला नाम समान होगा)।
GROUP BY का उपयोग चयन में पंक्तियों को समूह में करने के लिए किया जाता है, आमतौर पर जब कुछ पंक्तियों के लिए एक ही मान वाले पंक्तियों के समूह के लिए पंक्तियों के समुच्चय (जैसे कि कुल योग, औसत आदि) की गणना करते हैं।
ORDER BY का उपयोग पंक्तियों को चुनने के लिए किया जाता है, जो एक चयनित विवरण से उत्पन्न होती हैं।
कुछ अच्छे उदाहरण हैं। बस अपने स्वयं के वेबचैटशीट से जोड़ना पसंद करता हूं जो अच्छे स्पष्ट उदाहरण देता है, साथ ही साथ आपको अपने स्वयं के एसक्यूएल को निष्पादित करने देता है।
यह ध्यान दिया जाना चाहिए कि GROUP BY
हमेशा आवश्यक नहीं है (कम से कम PostgreSQL में, और अन्य एसक्यूएल वेरिएंट में संभावना है) आप ORDER BY
एक सूची के साथ उपयोग कर सकते हैं और आप अभी भी उपयोग कर सकते हैं ASC
या DESC
प्रति कॉलम ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;