Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tìm điểm trung bình cao nhất của sinh viên theo môn học trong MySQL

Tính điểm trung bình theo sinh viên và tìm giá trị cao nhất

Sử dụng truy vấn con (subquery) để tính trung bình điểm cho mỗi sinh viên, sau đó lấy giá trị lớn nhất.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    StudentName VARCHAR(40),
    StudentMarks INT
);
mysql> INSERT INTO DemoTable VALUES 
    ('Adam', 56), ('Chris', 78), ('Adam', 89), 
    ('Robert', 98), ('Chris', 65), ('Robert', 34);

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;

Kết quả:

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| Adam        | 56           |
| Chris       | 78           |
| Adam        | 89           |
| Robert      | 98           |
| Chris       | 65           |
| Robert      | 34           |
+-------------+--------------+

3. Truy vấn: Trung bình điểm cao nhất

mysql> SELECT MAX(avSal.StudentMarks) FROM (
    SELECT AVG(StudentMarks) AS StudentMarks
    FROM DemoTable
    GROUP BY StudentName
) AS avSal;

4. Kết quả

+-------------------------+
| MAX(avSal.StudentMarks) |
+-------------------------+
| 72.5000                 |
+-------------------------+

Phân tích chi tiết:

  • Adam: (56 + 89) / 2 = 72.5
  • Chris: (78 + 65) / 2 = 71.5
  • Robert: (98 + 34) / 2 = 66
  • Max = 72.5 (Adam)

Mở rộng: Nếu muốn biết tên sinh viên có điểm trung bình cao nhất:

SELECT StudentName, AVG(StudentMarks) AS AvgMarks
FROM DemoTable
GROUP BY StudentName
ORDER BY AvgMarks DESC
LIMIT 1;