खोज…


वाक्य - विन्यास

  1. अभिव्यक्ति का चयन करें 1, अभिव्यक्ति 2, ... अभिव्यक्ति_ एन,
  2. समुच्चय_क्रिया (अभिव्यक्ति)
  3. तालिकाओं से
  4. [कहां स्थितियां]
  5. 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 |
+----------+-----------+


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow