Trong bài đăng này, tôi đang chia sẻ trình diễn về cách tính Xếp hạng trong truy vấn MySQL.
RANK () có sẵn trong Microsoft SQL Server và MySQL không có bất kỳ RANK () mặc định nào.
Bạn có thể tính toán RANK bằng cách sử dụng một biến truy vấn nội tuyến để kiểm tra giá trị trước đó.
Nếu bản ghi trước đó khớp với bản ghi hiện tại, hãy tăng biến xếp hạng của bạn.
Mệnh đề ORDER BY là bắt buộc đối với cột mà bạn sẽ tính RANK trên đó.
Dưới đây là một ví dụ đầy đủ:
Đầu tiên hãy tạo bảng và dữ liệu mẫu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CREATE DATABASE Employee; CREATE TABLE Employee.tbl_EmpSalary ( EmpID INT ,EmpSalary INT ); INSERT INTO Employee.tbl_EmpSalary VALUES (1, 10000) ,(2, 20000) ,(3, 26000) ,(4, 10000) ,(5, 35000) ,(6, 40000) ,(7, 42000) ,(8, 20000); |
Bây giờ hãy tính RANK trên tiền lương của nhân viên.
1 2 3 4 5 6 7 8 9 10 11 12 13 | SET @PreviousRecord = NULL; SET @Rank = 0; SELECT EmpID ,EmpSalary ,CASE WHEN @PreviousRecord = EmpSalary THEN @Rank WHEN @PreviousRecord := EmpSalary THEN @Rank := @Rank + 1 END AS EmpSalaryRank FROM Employee.tbl_EmpSalary ORDER BY EmpSalary; |
Kết quả: