Hàm RANK và DENSE_RANK
Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 65 trên 72.
ROW_NUMBER() là một loại hàm xếp hạng, còn có hai hàm khác là RANK() và DENSE_RANK().
Hàm RANK() đánh số các hàng như ROW_NUMBER(), nhưng gán cùng một số cho các hàng giống nhau và bỏ qua một số. DENSE_RANK() tương tự RANK(), nhưng không bỏ qua số nào.
Ví dụ:
| id | level |
| 1 | 5 |
| 2 | 6 |
| 3 | 6 |
| 4 | 7 |
| 5 | 7 |
| 6 | 5 |
SELECT id,
ROW_NUMBER() OVER (ORDER BY level) as row_num,
RANK() OVER (ORDER BY level) as row_rank,
DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1Kết quả trả về sẽ là:
| id | row_num | row_rank | row_dense_rank |
| 1 | 1 | 1 | 1 |
| 6 | 2 | 1 | 1 |
| 2 | 3 | 3 | 2 |
| 3 | 4 | 3 | 2 |
| 4 | 5 | 5 | 3 |
| 5 | 6 | 5 | 3 |
Giải thích:
ROW_NUMBER(): Luôn duy nhất: 1, 2, 3, 4, 5, 6RANK():- cấp độ 5 (2 hàng): cả hai đều có thứ hạng 1
- cấp độ 6 (2 hàng): cả hai đều có thứ hạng 3 (bỏ qua 2)
- cấp độ 7 (2 hàng): cả hai đều có thứ hạng 5 (bỏ qua 4)
DENSE_RANK():- cấp độ 5 (2 hàng): cả hai đều có thứ hạng 1
- cấp độ 6 (2 hàng): cả hai đều có thứ hạng 2 (không bỏ qua)
- cấp độ 7 (2 hàng): cả hai đều có thứ hạng 3 (không bỏ qua)
Thử thách
DễCác bảng và cột có sẵn:
medals:region,medal_color,medal_count
Tạo truy vấn hiển thị khu vực, tổng số huy chương (tổng của tất cả huy chương, không phân biệt màu sắc) và hai kiểu xếp hạng:
- Một
regular_rank(có khoảng trống) dựa trên tổng số huy chương - Một
dense_rank(không có khoảng trống) dựa trên tổng số huy chương
Sắp xếp kết quả theo:
order by total_medals desc, region ascTự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
2Điều kiện
Kiến thức cơ bản về điều kiệnTừ khóa ANDTừ khóa ORTừ khóa NOTKết hợp nhiều điều kiệnDấu ngoặc đơnGiá trị logic3Định dạng giá trị trả về cụ thể
Giá trị nullSắp xếp kết quả phần 1Sắp xếp kết quả phần 2Ôn tập: Công ty an ninh mạngGiới hạn số bản ghiÔn tập: Nhà máy sản xuất xe6Thử thách nhập môn
Ôn tập: bầu cử quốc hộiÔn tập: cảnh sát bắt giữ tội phạmÔn tập: vật chứa đồ uống tại quầy barÔn tập: kỹ sư tạo cột mới9Nhiều bảng
Phép nối cơ bản phần 1Phép nối cơ bản phần 2Ôn tập về phép nốiPhép tự nốiÔn tập về phép tự nốiHợpĐơn giản hóa truy vấn bằng từ khóa WITHÔn tập về truy vấn WITHÔn tập về nhà thầu bất động sản12Hàm cửa sổ phần 2
Hàm RANK và DENSE_RANKÔn tập: RANK và DENSE_RANKHàm NTILEHàm tổng hợpTiêu chí ROWS và RANGETự luyện tập: Playground SQL