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

Truy vấn MySQL tính tổng và sắp xếp kết quả theo tổng giảm dần

Để tính tổng giá trị cho mỗi nhóm (ví dụ: tổng điểm mỗi học sinh) và sắp xếp kết quả theo tổng giảm dần, kết hợp GROUP BY, SUM() và ORDER BY alias.

Cú pháp

SELECT cot_nhom, SUM(cot_tinh_tong) AS ten_alias
FROM ten_bang
GROUP BY cot_nhom
ORDER BY ten_alias DESC;

Ví dụ minh họa

Tạo bảng điểm:

mysql> CREATE TABLE DemoTable1499 (
    -> StudentName VARCHAR(20),
    -> StudentMarks INT
    -> );

Chèn dữ liệu (Chris, David, Bob mỗi người 2 lần thi):

mysql> INSERT INTO DemoTable1499 VALUES
    -> ('Chris', 56), ('David', 78), ('Bob', 98),
    -> ('Chris', 45), ('David', 98), ('Bob', 58);

Truy vấn tổng điểm và sắp xếp giảm dần:

mysql> SELECT StudentName, SUM(StudentMarks) AS TotalSum
    -> FROM DemoTable1499
    -> GROUP BY StudentName
    -> ORDER BY TotalSum DESC;

Kết quả:

+-------------+----------+
| StudentName | TotalSum |
+-------------+----------+
| David       |      176 |
| Bob         |      156 |
| Chris       |      101 |
+-------------+----------+

Giải thích

  • GROUP BY StudentName: gom hàng theo tên.
  • SUM(StudentMarks): tính tổng điểm mỗi nhóm.
  • AS TotalSum: đặt alias cho cột tổng.
  • ORDER BY TotalSum DESC: sắp xếp theo alias giảm dần (MySQL cho phép dùng alias trong ORDER BY).

Mở rộng

  • Thêm HAVING TotalSum > 150 để lọc nhóm sau khi gom.
  • Dùng WITH ROLLUP để có hàng tổng cộng cuối cùng.
  • Index trên (StudentName, StudentMarks) hỗ trợ covering index cho truy vấn này.