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

Cách thêm vị trí xếp hạng của hàng trong SQL với RANK ()

Vấn đề:

Bạn muốn xếp hạng các bản ghi bằng cách bỏ qua các vị trí xếp hạng sau các hàng có cùng thứ hạng.

Ví dụ:

Cơ sở dữ liệu của chúng tôi có một bảng tên là championship với dữ liệu trong các cột sau:id (khóa chính), user_namescore .

id user_name điểm
111 John 12
112 Mary 23
115 Lisa 45
120 Alan 23
221 Chris 23

Hãy hiển thị tên của tất cả người dùng và điểm số của họ được sắp xếp theo thứ tự giảm dần và xếp hạng theo điểm số.

Giải pháp 1:

SELECT RANK() OVER(ORDER BY score DESC) AS rank_place,
  user_name,
  score
FROM championship;

Truy vấn này trả về xếp hạng sau:

rank_place user_name điểm
1 Lisa 45
2 Mary 23
2 Alan 23
2 Chris 23
5 John 12

Lưu ý rằng số thứ hạng là từ 1 đến 5, được sắp xếp theo điểm theo thứ tự giảm dần.

Thảo luận:

Sử dụng RANK nếu bạn muốn bỏ qua các vị trí xếp hạng sau các hàng có cùng thứ hạng. Trong ví dụ của chúng tôi, Mary, Alan và Chris đều có cùng xếp hạng là 2. Vị trí đủ điều kiện tiếp theo là 5 (được tính từ 2 + 3 hàng có cùng thứ hạng).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MuleSoft đưa GraphQL vào Tích hợp API nâng cao

  2. Hiểu biết về làm lại nhóm nhật ký so với tệp và thành viên

  3. Cách xóa dữ liệu khỏi Elastisearch

  4. Lặp đi lặp lại! Quản lý các sự kiện định kỳ trong mô hình dữ liệu

  5. Điều chỉnh hiệu suất đầu gối:Sử dụng sai bảng tạm thời