SQL Server: Hàm xếp hạng (Ranking)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Các hàm xếp hạng (Ranking) dùng để xếp hạng các giá trị của một cột nào đó của  tập kết quả có được từ câu lệnh SELECT theo thứ tự tăng dần hoặc giảm dần các giá trị của cột này.

Các hàm xếp hạng bắt buộc phải đi kèm với mệnh đề ORDER BY.

Phạm vi áp dụng: SQL SERVER.

Sau đây là danh sách các hàm xếp hạng:

1. ROW_NUMBER():

Hàm ROW_NUMBER() dùng để xếp hạng tập kết quả một cách tuần tự theo thứ tự bắt đầu từ 1 mà không quan tâm đến các giá trị giống nhau.

Bạn có thể hình dung cách xếp hạng của hàm ROW_NUMBER() ở bảng sau:

ROW_NUMBER() Mark
1 5
2 6
3 6
4 7
5 7
6 8
7 9
8 9
9 10

Cú pháp:

SELECT ROW_NUMBER() OVER(ORDER BY Tên_cột asc/desc) AS Bí_danh, Các_cột FROM Tên_bảng;

Ví dụ:

SELECT ROW_NUMBER() OVER(ORDER BY mark asc) AS [Xếp hạng điểm], mark FROM Marks;

2. DENSE_RANK():

Hàm DENSE_RANK() dùng để xếp hạng các giá trị của một cột theo quy tắc các giá trị giống nhau thuộc cùng một hạng, giá trị nằm sau các giá trị giống nhau sẽ có hạng  lớn hơn 1 đơn vị so với hạng của các giá trị ngay trước nó.

Ví dụ, nếu hạng của các giá trị giống nhau là 5 thì giá trị nằm ngay sau các giá trị giống nhau này sẽ có hạng là: 5 + 1 = 6

Bạn có thể hình dung cách xếp hạng của hàm DENSE_RANK() ở bảng sau:

DENSE_RANK() Mark
1 5
2 6
2 6
3 7
3 7
4 8
5 9
5 9
6 10

Cú pháp:

SELECT DENSE_RANK() OVER(ORDER BY Tên_cột asc/desc) AS Bí_danh, Các_cột FROM Tên_bảng;

Ví dụ:

SELECT DENSE_RANK() OVER(ORDER BY mark asc) AS [Xếp hạng điểm], mark FROM Marks;

3. RANK():

Hàm RANK() dùng để xếp hạng các giá trị của một cột theo quy tắc giống hàm DENSE_RANK(), nhưng khác ở một điểm đó là hạng của giá trị nằm ngay sau các giá trị giống nhau được tính bằng cách lấy hạng của các giá trị giống nhau đó cộng với số lượng các giá trị giống nhau.

Ví dụ, nếu có 2 giá trị giống nhau và hạng của các giá trị giống nhau này là 7 thì hạng của giá trị nằm ngay sau các giá trị giống nhau này sẽ là: 7 + 2 = 9

Bạn có thể hình dung cách xếp hạng của hàm RANK() ở bảng sau:

RANK() Mark
1 5
2 6
2 6
4 7
4 7
6 8
7 9
7 9
9 10

Cú pháp:

SELECT RANK() OVER(ORDER BY Tên_cột asc/desc) AS Bí_danh, Các_cột FROM Tên_bảng;

Ví dụ:

SELECT RANK() OVER(ORDER BY mark asc) AS [Xếp hạng điểm], mark FROM Marks;

» Tiếp: Hàm xử lý chuỗi
« Trước: Hàm toán học (Math)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!