MySQL
समूह द्वारा
खोज…
वाक्य - विन्यास
- अभिव्यक्ति का चयन करें 1, अभिव्यक्ति 2, ... अभिव्यक्ति_ एन,
- समुच्चय_क्रिया (अभिव्यक्ति)
- तालिकाओं से
- [कहां स्थितियां]
- GROUP BY अभिव्यक्ति 1, अभिव्यक्ति 2, ... अभिव्यक्ति_ एन;
पैरामीटर
पैरामीटर | विवरण |
---|---|
अभिव्यक्ति 1, अभिव्यक्ति 2, ... अभिव्यक्ति_ एन | वे अभिव्यक्तियाँ जो किसी कुल फ़ंक्शन में नहीं होती हैं और उन्हें समूह BY खंड में शामिल किया जाना चाहिए। |
aggregate_function | एक फ़ंक्शन जैसे SUM, COUNT, MIN, MAX या AVG फ़ंक्शन। |
टेबल | वह तालिकाएँ जिनसे आप रिकॉर्ड प्राप्त करना चाहते हैं। FROM क्लॉज में कम से कम एक तालिका सूचीबद्ध होनी चाहिए। |
कहां की स्थितियां | वैकल्पिक। रिकॉर्ड के लिए चयनित होने के लिए आवश्यक शर्तें। |
टिप्पणियों
MySQL ग्रुप बाय क्लॉज का उपयोग एक सेलेक्ट स्टेटमेंट में कई रिकॉर्ड्स में डेटा एकत्र करने और परिणाम को एक या अधिक कॉलम द्वारा समूह में करने के लिए किया जाता है।
इसका व्यवहार ONLY_FULL_GROUP_BY
चर के मान से नियंत्रित होता है। जब यह सक्षम हो जाता है, तो उस समूह का SELECT
जो किसी भी कॉलम द्वारा आउटपुट में नहीं एक त्रुटि लौटाता है। ( यह 5.7.5 के रूप में डिफ़ॉल्ट है ।) इस चर को सेट करने और न करने दोनों भोले उपयोगकर्ताओं या अन्य DBMS के आदी उपयोगकर्ताओं के लिए समस्या पैदा कर सकते हैं।
SUM फ़ंक्शन का उपयोग करके समूह
SELECT product, SUM(quantity) AS "Total quantity"
FROM order_details
GROUP BY product;
MIN फ़ंक्शन का उपयोग करके समूह
कर्मचारियों की एक तालिका मान लें जिसमें प्रत्येक पंक्ति एक कर्मचारी है जिसका name
, department
और salary
।
SELECT department, MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department;
यह आपको बताता है कि किस विभाग में सबसे कम वेतन वाला कर्मचारी है, और वह वेतन क्या है। प्रत्येक विभाग में सबसे कम वेतन वाले कर्मचारी का name
खोजना एक अलग समस्या है, इस उदाहरण के दायरे से परे। "समूहवार अधिकतम" देखें।
COUNT फ़ंक्शन का उपयोग करके समूह
SELECT department, COUNT(*) AS "Man_Power"
FROM employees
GROUP BY department;
HAVING का उपयोग करके ग्रुप
SELECT department, COUNT(*) AS "Man_Power"
FROM employees
GROUP BY department
HAVING COUNT(*) >= 10;
GROUP BY ... HAVING
का उपयोग करना GROUP BY ... HAVING
समग्र रिकॉर्ड को फ़िल्टर करने के लिए SELECT ... WHERE
व्यक्तिगत रिकॉर्ड को फ़िल्टर करने के लिए SELECT ... WHERE
का उपयोग करने के लिए अनुरूप है।
आप यह भी कह सकते हैं HAVING Man_Power >= 10
के बाद से HAVING
समझता है "अन्य नामों"।
ग्रुप कॉनैट का उपयोग करके समूह
समूह कॉनकैट का उपयोग MySQL में प्रति कॉलम एक से अधिक परिणामों के साथ भावों के संक्षिप्त मूल्यों को प्राप्त करने के लिए किया जाता है। मतलब, एक कॉलम के लिए वापस चुने जाने वाली कई पंक्तियाँ हैं जैसे Name(1):Score(*)
नाम | स्कोर |
---|---|
एडम | A + |
एडम | ए- |
एडम | बी |
एडम | सी + |
बिल | डी |
जॉन | ए- |
SELECT Name, GROUP_CONCAT(Score ORDER BY Score desc SEPERATOR ' ') AS Grades
FROM Grade
GROUP BY Name
परिणाम:
+------+------------+
| Name | Grades |
+------+------------+
| Adam | C+ B A- A+ |
| Bill | D- |
| John | A- |
+------+------------+
कृषि कार्यों के साथ ग्रुप बाय
तालिका आदेश
+---------+------------+----------+-------+--------+
| orderid | customerid | customer | total | items |
+---------+------------+----------+-------+--------+
| 1 | 1 | Bob | 1300 | 10 |
| 2 | 3 | Fred | 500 | 2 |
| 3 | 5 | Tess | 2500 | 8 |
| 4 | 1 | Bob | 300 | 6 |
| 5 | 2 | Carly | 800 | 3 |
| 6 | 2 | Carly | 1000 | 12 |
| 7 | 3 | Fred | 100 | 1 |
| 8 | 5 | Tess | 11500 | 50 |
| 9 | 4 | Jenny | 200 | 2 |
| 10 | 1 | Bob | 500 | 15 |
+---------+------------+----------+-------+--------+
- COUNT
उन पंक्तियों की संख्या लौटाएं जो WHERE
क्लॉज में एक विशिष्ट मानदंड को संतुष्ट करती हैं।
जैसे: प्रत्येक ग्राहक के लिए आदेशों की संख्या।
SELECT customer, COUNT(*) as orders
FROM orders
GROUP BY customer
ORDER BY customer
परिणाम:
+----------+--------+
| customer | orders |
+----------+--------+
| Bob | 3 |
| Carly | 2 |
| Fred | 2 |
| Jenny | 1 |
| Tess | 2 |
+----------+--------+
- योग
चयनित कॉलम का योग लौटाएं।
जैसे: प्रत्येक ग्राहक के लिए कुल और आइटम का योग।
SELECT customer, SUM(total) as sum_total, SUM(items) as sum_items
FROM orders
GROUP BY customer
ORDER BY customer
परिणाम:
+----------+-----------+-----------+
| customer | sum_total | sum_items |
+----------+-----------+-----------+
| Bob | 2100 | 31 |
| Carly | 1800 | 15 |
| Fred | 600 | 3 |
| Jenny | 200 | 2 |
| Tess | 14000 | 58 |
+----------+-----------+-----------+
- एवीजी
संख्यात्मक मान के किसी स्तंभ का औसत मान लौटाएं।
जैसे: प्रत्येक ग्राहकों के लिए औसत ऑर्डर मूल्य।
SELECT customer, AVG(total) as avg_total
FROM orders
GROUP BY customer
ORDER BY customer
परिणाम:
+----------+-----------+
| customer | avg_total |
+----------+-----------+
| Bob | 700 |
| Carly | 900 |
| Fred | 300 |
| Jenny | 200 |
| Tess | 7000 |
+----------+-----------+
- मैक्स
किसी निश्चित स्तंभ या अभिव्यक्ति का उच्चतम मान लौटाएं।
उदाहरण: प्रत्येक ग्राहकों के लिए उच्चतम आदेश।
SELECT customer, MAX(total) as max_total
FROM orders
GROUP BY customer
ORDER BY customer
परिणाम:
+----------+-----------+
| customer | max_total |
+----------+-----------+
| Bob | 1300 |
| Carly | 1000 |
| Fred | 500 |
| Jenny | 200 |
| Tess | 11500 |
+----------+-----------+
- मिन
एक निश्चित स्तंभ या अभिव्यक्ति के निम्नतम मूल्य को वापस करें।
जैसे: प्रत्येक ग्राहकों के लिए सबसे कम क्रम।
SELECT customer, MIN(total) as min_total
FROM orders
GROUP BY customer
ORDER BY customer
परिणाम:
+----------+-----------+
| customer | min_total |
+----------+-----------+
| Bob | 300 |
| Carly | 800 |
| Fred | 100 |
| Jenny | 200 |
| Tess | 2500 |
+----------+-----------+