SQL Server: Hàm Xếp Hạng (Ranking) | V1Study
Có thể bạn quan tâm
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;
Từ khóa » Hàm Rank Trong Sql
-
Hàm RANK Trong SQL Server - Bài Viết Sưu Tầm
-
Các Hàm Ranking Mới Trong SQL Server 2005
-
Các Hàm RANK, DENSE_RANK Và ROW_NUMBER Trong SQL Server
-
Hàm RANK Trong SQL
-
RANKING In SQL (ROW_NUMBER, RANK, DENSE_RANK,NTILE)
-
Sự Khác Biệt Giữa Các Hàm RANK () Và DENSE_RANK ... - HelpEx
-
DENSE_RANK (Transact-SQL) - SQL Server - Microsoft Docs
-
Sử Dụng ROW_NUMBER, RANK, Và DENSE_RANK - Nhật Ký Học Tập
-
Các Hàm Ranking Mới Trong SQL Server 2005 - Kiến Thức Khoa Học
-
SQL Rank Function - CodeLearn
-
Window Functions Trong MySQL, Nâng Cao Và Cực Kì Hữu Dụng ...
-
17 Ranking Trong Sql Với Sql Thì Rowsnumber Trả Về - Course Hero
-
Sự Khác Biệt Giữa Các Hàm RANK () Và DENSE_RANK () Trong Orory ...