GROUP BY और AVG() के साथ प्रति समूह औसत गणना
जब एक ही ID की कई पंक्तियां हों और आपको प्रत्येक ID के लिए औसत चाहिए, तो GROUP BY के साथ AVG() एग्रीगेट फंक्शन का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
StudentId INT,
StudentMarks INT
);
Query OK, 0 rows affected (0.83 sec)
mysql> INSERT INTO DemoTable VALUES(1000,78); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DemoTable VALUES(1001,88); Query OK, 1 row affected (0.21 sec) mysql> INSERT INTO DemoTable VALUES(1000,89); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable VALUES(1000,67); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable VALUES(1000,90); Query OK, 1 row affected (0.21 sec) mysql> INSERT INTO DemoTable VALUES(1001,91); Query OK, 1 row affected (0.17 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-----------+--------------+ | StudentId | StudentMarks | +-----------+--------------+ | 1000 | 78 | | 1001 | 88 | | 1000 | 89 | | 1000 | 67 | | 1000 | 90 | | 1001 | 91 | +-----------+--------------+ 6 rows in set (0.00 sec)
प्रति ID औसत निकालने की क्वेरी
mysql> SELECT StudentId, AVG(StudentMarks) FROM DemoTable GROUP BY StudentId;
परिणाम:
+-----------+-------------------+ | StudentId | avg(StudentMarks) | +-----------+-------------------+ | 1000 | 81.0000 | | 1001 | 89.5000 | +-----------+-------------------+ 2 rows in set (0.03 sec)
गणना: StudentId 1000: (78+89+67+90)/4 = 81। StudentId 1001: (88+91)/2 = 89.5। GROUP BY प्रत्येक ID के लिए अलग समूह बनाता है।