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

หาคะแนนสูงสุดของแต่ละนักเรียนจาก Marks1 และ Marks2 ใน MySQL

ใช้ MAX() และ GROUP BY หาคะแนนสูงสุดต่อคนต่อวิชา

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

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); 
Query OK, 1 row affected (0.30 sec) 
mysql> insert into DemoTable values('John@gmail.com',32,45); 
Query OK, 1 row affected (0.34 sec) 
mysql> insert into DemoTable values('Carol@gmail.com',32,45); 
Query OK, 1 row affected (1.64 sec) 
mysql> insert into DemoTable values('David@gmail.com',45,32); 
Query OK, 1 row affected (0.18 sec)

คิวรี่หาคะแนนสูงสุดแต่ละวิชาต่อคน

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

ผลลัพธ์

+-----------------+-------------+-------------+ 
| StudentEmailId  | max(Marks1) | max(Marks2) | 
+-----------------+-------------+-------------+ 
| John@gmail.com  |          45 |          45 | 
| Carol@gmail.com |          32 |          45 | 
| David@gmail.com |          45 |          32 | 
+-----------------+-------------+-------------+ 
3 rows in set (0.00 sec)

John มี 2 เรคคอร์ด Marks1: 45,32 → MAX=45 | Marks2: 32,45 → MAX=45 | GROUP BY จัดกลุ่มตาม Email แล้ว MAX หาค่าสูงสุดในแต่ละคอลัมน์