Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để tổng điểm của các sinh viên trùng tên trong MySQL với ORDER BY?

Đối với điều này, hãy sử dụng ORDER BY cùng với mệnh đề GROUP BY. Trước tiên, chúng ta hãy tạo một bảng với Tên và Điểm của Học sinh -

mysql> create table countRowValueDemo
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(20),
   -> StudentMathScore int
   -> );
Query OK, 0 rows affected (0.71 sec)

Sau đây là truy vấn để chèn các bản ghi trong bảng bằng cách sử dụng lệnh insert -

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('Larry',45);
Query OK, 1 row affected (0.19 sec)

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('Mike',56);
Query OK, 1 row affected (0.16 sec)

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('John',60);
Query OK, 1 row affected (0.15 sec)

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('David',40);
Query OK, 1 row affected (0.24 sec)

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('David',70);
Query OK, 1 row affected (0.12 sec)

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('John',80);
Query OK, 1 row affected (0.13 sec)

mysql> insert into countRowValueDemo(StudentName,StudentMathScore) values('David',88);
Query OK, 1 row affected (0.17 sec)

Sau đây là truy vấn để hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select -

mysql> select * from countRowValueDemo;

Điều này sẽ tạo ra kết quả sau -

+-----------+-------------+------------------+
| StudentId | StudentName | StudentMathScore |
+-----------+-------------+------------------+
| 1         | Larry       | 45               |
| 2         | Mike        | 56               |
| 3         | John        | 60               |
| 4         | David       | 40               |
| 5         | David       | 70               |
| 6         | John        | 80               |
| 7         | David       | 88               |
+-----------+-------------+------------------+
7 rows in set (0.00 sec)

Trường hợp 1: Thứ tự giảm dần (Tổng)

Sau đây là truy vấn tính tổng điểm của các sinh viên có tên tương tự. Kết quả sẽ được hiển thị theo thứ tự giảm dần -

mysql> select StudentName,
   -> sum(StudentMathScore) AS TOTAL_SCORE
   -> from countRowValueDemo
   -> group by StudentName
   -> order by sum(StudentMathScore) desc;

Điều này sẽ tạo ra kết quả sau -

+-------------+-------------+
| StudentName | TOTAL_SCORE |
+-------------+-------------+
| David       | 198         |
| John        | 140         |
| Mike        | 56          |
| Larry       | 45          |
+-------------+-------------+
4 rows in set (0.00 sec)

Trường hợp 2: Thứ tự tăng dần (Tổng)

Sau đây là truy vấn tính tổng điểm của các sinh viên có tên giống nhau. Kết quả sẽ được hiển thị theo thứ tự giảm dần -

mysql> select StudentName,
   -> sum(StudentMathScore) AS TOTAL_SCORE
   -> from countRowValueDemo
   -> group by StudentName
   -> order by sum(StudentMathScore);

Điều này sẽ tạo ra kết quả sau -

+-------------+-------------+
| StudentName | TOTAL_SCORE |
+-------------+-------------+
| Larry       | 45          |
| Mike        | 56          |
| John        | 140         |
| David       | 198         |
+-------------+-------------+
4 rows in set (0.00 sec)