Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาค่าเฉลี่ยของแถวที่มี ID เดียวกันใน MySQL ด้วย GROUP BY และ AVG()

การคำนวณค่าเฉลี่ยต่อกลุ่มด้วย AVG() และ GROUP BY

เมื่อต้องการหาค่าเฉลี่ยของคอลัมน์ตัวเลข จัดกลุ่มตามคอลัมน์ ID เราใช้ฟังก์ชัน AVG() ร่วมกับ GROUP BY

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    StudentId INT,
    StudentMarks INT
);
Query OK, 0 rows affected (0.83 sec)

mysql> INSERT INTO DemoTable VALUES(1000,78);
mysql> INSERT INTO DemoTable VALUES(1001,88);
mysql> INSERT INTO DemoTable VALUES(1000,89);
mysql> INSERT INTO DemoTable VALUES(1000,67);
mysql> INSERT INTO DemoTable VALUES(1000,90);
mysql> INSERT INTO DemoTable VALUES(1001,91);

แสดงข้อมูลทั้งหมด

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)

คำสั่งหาค่าเฉลี่ยคะแนนต่อ StudentId

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)

คำอธิบาย

  • GROUP BY StudentId : จัดกลุ่มแถวที่มี StudentId เดียวกัน
  • AVG(StudentMarks) : คำนวณค่าเฉลี่ยของคะแนนในแต่ละกลุ่ม
  • StudentId 1000 มี 4 รายการ ค่าเฉลี่ย = (78+89+67+90)/4 = 81
  • StudentId 1001 มี 2 รายการ ค่าเฉลี่ย = (88+91)/2 = 89.5