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;