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

GROUP BY có điều kiện trong MySQL để lấy điểm cao nhất mỗi sinh viên

Dùng MAX() kết hợp GROUP BY để lấy giá trị lớn nhất cho mỗi nhóm. Tạo bảng:

mysql> CREATE TABLE DemoTable (
    StudentName VARCHAR(40),
    StudentMarks INT
); Query OK, 0 rows affected (0.64 sec)

Chèn dữ liệu (John và Chris trùng tên, điểm khác nhau):

mysql> INSERT INTO DemoTable VALUES('John',78);  Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',48); Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('John',67);  Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',89); Query OK, 1 row affected (0.15 sec)

Hiển thị dữ liệu:

mysql> SELECT * FROM DemoTable;

Kết quả:

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| John        | 78           |
| Chris       | 48           |
| John        | 67           |
| Chris       | 89           |
+-------------+--------------+
4 rows in set (0.00 sec)

Truy vấn lấy điểm cao nhất của mỗi sinh viên:

mysql> SELECT StudentName, MAX(StudentMarks) AS StudentMarks 
FROM DemoTable GROUP BY StudentName;

Kết quả:

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| John        | 78           |
| Chris       | 89           |
+-------------+--------------+
2 rows in set (0.00 sec)

Giải thích: GROUP BY StudentName gom nhóm theo tên, MAX() lấy điểm lớn nhất trong mỗi nhóm.