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

Lấy điểm tối đa riêng lẻ của sinh viên từ cột marks1 và marks2 trong MySQL

Tìm điểm cao nhất của mỗi sinh viên từ 2 cột điểm với MAX() và GROUP BY

Mỗi sinh viên có nhiều bản ghi (nhiều lần thi), cần tìm max của Marks1 và max của Marks2 riêng biệt.

Tạo bảng và dữ liệu

mysql> create table DemoTable ( 
    StudentEmailId varchar(20), 
    Marks1 int, 
    Marks2 int 
); 
Query OK, 0 rows affected (0.90 sec)
mysql> insert into DemoTable values('John@gmail.com',45,32); 
mysql> insert into DemoTable values('John@gmail.com',32,45); 
mysql> insert into DemoTable values('Carol@gmail.com',32,45); 
mysql> insert into DemoTable values('David@gmail.com',45,32);

Truy vấn MAX riêng cho từng cột điểm

mysql> select StudentEmailId, max(Marks1), max(Marks2) 
    -> from DemoTable 
    -> group by StudentEmailId;

Kết quả

+-----------------+-------------+-------------+ 
| StudentEmailId  | max(Marks1) | max(Marks2) | 
+-----------------+-------------+-------------+ 
| John@gmail.com  | 45          | 45          | 
| Carol@gmail.com | 32          | 45          | 
| David@gmail.com | 45          | 32          | 
+-----------------+-------------+-------------+

Phân tích John@gmail.com:

  • Bản ghi 1: Marks1=45, Marks2=32
  • Bản ghi 2: Marks1=32, Marks2=45
  • MAX(Marks1) = 45, MAX(Marks2) = 45 (từ 2 bản ghi khác nhau)

Lưu ý: Đây là max riêng lẻ từng cột. Nếu cần max tổng thể (max của Marks1 UỐNG Marks2): GREATEST(MAX(Marks1), MAX(Marks2)).

Mở rộng: Thêm COUNT(*) số lần thi, AVG() điểm trung bình.