GROUP BY और SUM() के साथ विषयवार कुल अंक
विषय के अनुसार रिकॉर्ड्स ग्रुप करके अंकों का योग निकालने के लिए GROUP BY और SUM() का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Name VARCHAR(40),
Subject VARCHAR(40),
Marks INT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('Chris', 'MySQL', 76);
mysql> INSERT INTO DemoTable VALUES ('Sam', 'MongoDB', 86);
mysql> INSERT INTO DemoTable VALUES ('Mike', 'MySQL', 98);
mysql> INSERT INTO DemoTable VALUES ('David', 'Java', 93);
mysql> INSERT INTO DemoTable VALUES ('Bob', 'MySQL', 57);
mysql> INSERT INTO DemoTable VALUES ('John', 'MongoDB', 77);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+---------+-------+ | Name | Subject | Marks | +-------+---------+-------+ | Chris | MySQL | 76 | | Sam | MongoDB | 86 | | Mike | MySQL | 98 | | David | Java | 93 | | Bob | MySQL | 57 | | John | MongoDB | 77 | +-------+---------+-------+
विषय के अनुसार ग्रुप करके अंकों का योग निकालने के लिए क्वेरी:
mysql> SELECT Subject, SUM(Marks) FROM DemoTable GROUP BY Subject;
आउटपुट:
+---------+------------+ | Subject | SUM(Marks) | +---------+------------+ | MySQL | 231 | | MongoDB | 163 | | Java | 93 | +---------+------------+
व्याख्या:
- GROUP BY Subject: रिकॉर्ड्स को विषय के अनुसार समूहित करता है
- SUM(Marks): प्रत्येक ग्रुप के लिए अंकों का योग निकालता है:
- MySQL: 76 + 98 + 57 = 231
- MongoDB: 86 + 77 = 163
- Java: 93 = 93
अतिरिक्त एग्रीगेट फंक्शन्स:
SELECT Subject,
SUM(Marks) AS Total_Marks,
AVG(Marks) AS Avg_Marks,
COUNT(*) AS Student_Count,
MIN(Marks) AS Min_Marks,
MAX(Marks) AS Max_Marks
FROM DemoTable
GROUP BY Subject;
HAVING के साथ फ़िल्टरिंग:
SELECT Subject, SUM(Marks) FROM DemoTable GROUP BY Subject HAVING SUM(Marks) > 200; -- केवल MySQL (231) दिखेगा