Hàm SQL DENSE_RANK()

Ham Sql Dense Rank



Các hàm cửa sổ là một tính năng quan trọng trong SQL và đóng vai trò cơ bản trong các hoạt động và tính toán dữ liệu phức tạp trong cơ sở dữ liệu SQL. Một trong những hàm trong hàm cửa sổ SQL là denden_rank().

Hàm DENSE_RANK() cho phép chúng ta chỉ định thứ hạng duy nhất cho mỗi hàng trong tập kết quả dựa trên các giá trị trong một cột được chỉ định thêm. Nó rất giống với hàm xếp hạng () nhưng có một chút khác biệt về cách hàm xử lý các bản ghi trùng lặp.

Trong hướng dẫn này, chúng ta sẽ khám phá cách hoạt động của hàm này, cú pháp được cung cấp và cách chúng ta có thể sử dụng nó trong cơ sở dữ liệu.







Làm thế nào nó hoạt động

Chúng ta hãy bắt đầu bằng cách giải thích cách hoạt động của chức năng này. Bạn nên nhớ rằng hàm này ở cấp độ cao và chúng tôi không thể giải thích cách triển khai cơ bản.



Hàm hoạt động bằng cách gán thứ hạng cho mỗi hàng trong tập kết quả bắt đầu từ thứ hạng 1 và tăng thêm 1 cho mỗi giá trị duy nhất trong các cột.



Các hàng có giá trị tương tự (trùng lặp) trong các cột đã chỉ định được gán cùng thứ hạng và hàng tiếp theo có giá trị khác được gán với thứ hạng có sẵn tiếp theo, không có bất kỳ khoảng trống nào.





Như chúng tôi đã đề cập, hàm không để lại bất kỳ khoảng trống nào khi có các giá trị trùng lặp, điều này làm cho nó khác với hàm xếp hạng().

Cách sử dụng phổ biến của hàmdense_rank() là thực hiện các thao tác xếp hạng. Ví dụ: chúng ta có thể sử dụng nó để tìm N bản ghi hàng đầu, v.v.



Cú pháp hàm:

Phần sau đây mô tả cú pháp của hàmdense_rank():

DENSE_RANK() TRÊN (

[PHẦN THAM GIA THEO biểu thức phân vùng, ... ]

ĐẶT HÀNG THEO biểu_thức sắp xếp [ASC | DESC], ...

)

Trong cú pháp đã cho:

  1. Chúng ta bắt đầu với chính hàmdense_rank().
  2. Mệnh đề OVER báo hiệu sự bắt đầu của các đặc tả chức năng cửa sổ. Điều này xác định cách áp dụng xếp hạng trong tập kết quả.
  3. Biểu thức PARTITION BY phân vùng là một mệnh đề tùy chọn cho phép chúng ta phân vùng tập hợp kết quả thành các nhóm hoặc phân vùng dựa trên một hoặc nhiều cột. Việc xếp hạng được áp dụng riêng trên từng phân vùng với việc đặt lại thứ hạng ở phân vùng mới.
  4. Biểu thức ORDER BY Sort_ chỉ định thứ tự mà chúng ta muốn sử dụng để sắp xếp dữ liệu trong các phân vùng kết quả.

Dữ liệu mẫu

Để minh họa cách sử dụng hàmdense_rank(), chúng ta hãy bắt đầu với một bảng có dữ liệu mẫu. Trong trường hợp của chúng tôi, chúng tôi sử dụng bảng “đơn đặt hàng” mẫu như sau:

Ví dụ 1: Cách sử dụng hàm Dense_Rank()

Chúng ta có thể sử dụng hàmdense_rank() để xếp hạng các đơn hàng kết quả dựa trên giá. Hãy xem xét truy vấn mẫu sau:

LỰA CHỌN

thứ tự_id,

tên_người_dùng_khách_hàng,

sản phẩm_đã mua,

DENSE_RANK() TRÊN (

ĐẶT HÀNG QUA

giá ĐĨA

) giá_thứ hạng

TỪ

mệnh lệnh o;

Trong ví dụ đã cho, chúng tôi sử dụng hàmdense_rank() để xếp hạng dữ liệu dựa trên giá của đơn đặt hàng. Chúng tôi bỏ qua mệnh đề PARTITION BY vì chúng tôi không nhóm dữ liệu.

Kết quả đầu ra như sau:

Ví dụ 2: PHẦN THAM GIA BỞI

Chúng ta cũng có thể thêm mệnh đề PARTITION BY để nhóm dữ liệu thành nhiều phân đoạn khác nhau, chẳng hạn như dựa trên sản phẩm đã mua.

Một truy vấn ví dụ như sau:

LỰA CHỌN

thứ tự_id,

tên_người_dùng_khách_hàng,

sản phẩm_đã mua,

DENSE_RANK() TRÊN (

phân vùng theo sản phẩm_purchased

ĐẶT HÀNG QUA

giá ĐĨA

) giá_thứ hạng

TỪ

mệnh lệnh o;

Điều này sẽ nhóm dữ liệu thành nhiều nhóm khác nhau dựa trên các nhóm kết quả và áp dụng thứ hạng cho các mục trong mỗi nhóm.

Phần kết luận

Trong bài đăng này, chúng ta đã tìm hiểu các nguyên tắc cơ bản về cách sử dụng và làm việc với hàm cửa sổdense_rank() trong SQL để gán thứ hạng cho các giá trị dựa trên các cột cụ thể.