Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách sắp xếp hàng theo tổng nhóm trong SQL

Vấn đề:

Bạn muốn sắp xếp các hàng theo tổng số được tạo bởi một nhóm bản ghi.

Ví dụ:

Cơ sở dữ liệu của chúng tôi có một bảng có tên training với dữ liệu trong bốn cột: id , đăng nhập , năm điểm số .

id đăng nhập năm điểm
1 Andy 2018 24
2 Lucy 2019 25
3 Andy 2019 20
4 Lucy 2018 16
5 Gary 2019 18
6 Gary 2018 19
7 Gary 2017 22
8 Lucy 2017 21
9 Andy 2017 26

Hãy lấy tên đăng nhập của từng người chơi cùng với tổng điểm của tất cả các năm, xếp các kỷ lục theo thứ tự giảm dần theo tổng điểm của người chơi.

Giải pháp:

Chúng tôi sẽ sử dụng toán tử ORDER BY để sắp xếp các bản ghi dựa trên hàm tổng hợp SUM() , tính toán tổng điểm cho mỗi người chơi trong tất cả các năm.

Đây là truy vấn bạn sẽ viết:

SELECT login,
  SUM(score) AS total_score
FROM training
GROUP BY login
ORDER BY SUM(score) DESC;

Đây là kết quả:

đăng nhập total_score
Andy 70
Lucy 62
Gary 59

Thảo luận:

Sử dụng ORDER BY nếu bạn muốn sắp xếp các hàng theo giá trị được trả về bởi một hàm tổng hợp như SUM() . Toán tử ORDER BY được theo sau bởi hàm tổng hợp (trong ví dụ của chúng tôi, SUM() ). DESC được đặt sau hàm này để chỉ định thứ tự sắp xếp giảm dần. Do đó, các giá trị tổng hợp cao nhất được hiển thị đầu tiên, sau đó các giá trị thấp hơn dần dần được hiển thị. Để sắp xếp theo thứ tự tăng dần, bạn có thể chỉ định ASC hoặc đơn giản là bỏ qua một trong hai từ khóa, vì tăng dần là thứ tự sắp xếp mặc định.

Trong truy vấn ở trên, chúng tôi chọn thông tin đăng nhập của từng người chơi và tổng điểm của họ trong tất cả các năm. Tổng điểm này được tính bằng cách sử dụng SUM () với cột điểm làm đối số. Chúng tôi thêm một bí danh cho giá trị tổng hợp này (SUM(score) AS total_score ); bạn có thể sử dụng bí danh này thay vì hàm tổng hợp trong mệnh đề ORDER BY (ORDER BY total_score DESC ).

Lưu ý rằng chúng tôi bao gồm đăng nhập trong GROUP BY. Nếu chúng tôi bao gồm một cột trong SELECT, chúng tôi cũng phải sử dụng cột trong GROUP BY. Trong ví dụ này, chúng tôi sử dụng mệnh đề GROUP BY theo sau là đăng nhập cột vì chúng tôi đặt cột này trong SELECT. Lưu ý rằng GROUP BY được đặt trước ORDER BY trong truy vấn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. VLDB ở lứa tuổi thanh thiếu niên 20:Bạn sẽ cần nhiều hơn nữa…

  2. Cách sử dụng hàm SUM trong SQL

  3. Sử dụng dữ liệu được bảo vệ bằng Azure Key Vault từ Linux

  4. “Có phải là Bí mật không? Nó có an toàn không?" Xử lý dữ liệu nhạy cảm trong mô hình hóa dữ liệu của bạn

  5. Chi phí của #temp theo dõi tạo bảng