MySQL में किसी कॉलम के मानों को ग्रुप करके एग्रीगेट फंक्शन (जैसे SUM()) लागू करने के लिए GROUP BY क्लॉज़ का उपयोग करें। यह प्रति छात्र कुल अंक, औसत, गिनती आदि निकालने का मानक तरीका है।
उदाहरण: प्रति छात्र कुल अंक
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1920 (
StudentName VARCHAR(20),
StudentMarks INT
);
डेटा इन्सर्ट करें (Chris के 3, David के 2 रिकॉर्ड):
mysql> INSERT INTO DemoTable1920 VALUES
('Chris', 67), ('David', 97), ('Chris', 57), ('David', 45), ('Chris', 89);
डेटा:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 67 | | David | 97 | | Chris | 57 | | David | 45 | | Chris | 89 | +-------------+--------------+
GROUP BY और SUM() के साथ क्वेरी:
mysql> SELECT StudentName, SUM(StudentMarks) AS TotalMarks FROM DemoTable1920 GROUP BY StudentName;
आउटपुट:
+-------------+------------+ | StudentName | TotalMarks | +-------------+------------+ | Chris | 213 | | David | 142 | +-------------+------------+
GROUP BY कैसे काम करता है
- ग्रुप बनाता है: समान
StudentNameवाली पंक्तियों को एक ग्रुप में रखता है - एग्रीगेट लागू: प्रत्येक ग्रुप पर
SUM(StudentMarks)लागू करता है - एक पंक्ति प्रति ग्रुप: परिणाम में प्रत्येक अद्वितीय नाम के लिए एक पंक्ति
अन्य उपयोगी एग्रीगेट फंक्शन
SELECT StudentName,
COUNT(*) AS exam_count,
SUM(StudentMarks) AS total_marks,
AVG(StudentMarks) AS avg_marks,
MIN(StudentMarks) AS min_marks,
MAX(StudentMarks) AS max_marks,
STDDEV(StudentMarks) AS stddev_marks
FROM DemoTable1920
GROUP BY StudentName;
HAVING के साथ फ़िल्टरिंग
ग्रुप बनने के बाद फ़िल्टर करने के लिए HAVING उपयोग करें:
-- केवल 200+ कुल अंक वाले छात्र SELECT StudentName, SUM(StudentMarks) AS TotalMarks FROM DemoTable1920 GROUP BY StudentName HAVING SUM(StudentMarks) > 200;
WHERE vs HAVING
| क्लॉज़ | लागू होता है | एग्रीगेट उपयोग |
|---|---|---|
| WHERE | ग्रुपिंग से पहले (पंक्ति स्तर) | नहीं |
| HAVING | ग्रुपिंग के बाद (ग्रुप स्तर) | हां |
बेस्ट प्रैक्टिस
SELECTमें केवल ग्रुपिंग कॉलम या एग्रीगेट फंक्शन शामिल करें- MySQL 5.7+ में
ONLY_FULL_GROUP_BYमोड डिफ़ॉल्ट ऑन है (सख्त SQL मोड) - ग्रुपिंग कॉलम पर इंडेक्स प्रदर्शन सुधारता है
GROUP BY डेटा विश्लेषण, रिपोर्टिंग, और सारांश उत्पन्न करने का मूलभूत टूल है।