Hướng dẫn này sẽ nghiên cứu sâu hơn về cách thức hoạt động của chức năng dày đặc MySQL và cách chúng ta có thể sử dụng nó trong các hoạt động cơ sở dữ liệu khác nhau. Nếu bạn muốn làm theo hướng dẫn này, hãy cân nhắc tải xuống cơ sở dữ liệu mẫu Sakila từ tài nguyên được cung cấp bên dưới Show https. // nhà phát triển. mysql. com/doc/index-khác. html Sử dụng cơ bảnHàm MySQL DENSE_RANK() hiển thị thứ hạng của một hàng trong một phân vùng không có khoảng trống. Xếp hạng của các hàng tăng thêm giá trị 1 từ giá trị xếp hạng duy nhất của hàng trước đó Cú pháp chung của hàm DENSE_RANK() như sau CHỌN col1 DENSE_RANK () QUA (PARTITION BY {expr} ORDER BY {expr} [ASC|DESC] ) rank_col_name TỪ tb_name Hãy để chúng tôi kiểm tra cú pháp truy vấn trên chặt chẽ hơn Hàm DENSE_RANK() liên kết với mệnh đề SELECT, mệnh đề này sẽ hiển thị thứ hạng của các hàng từ bảng được chỉ định Các phần DENSE_RANK() Over trả về kết quả của hàm DENSE_RANK() và đầu ra được giữ trong tên cột được chỉ định Mệnh đề partition by chia kết quả trả về bởi mệnh đề FROM thành các partition. Hàm DENSE_RANK() được áp dụng cho từng phân vùng Cuối cùng, phần ORDER BY chỉ định thứ tự của các hàng đã đặt trong mỗi phân vùng Trường hợp sử dụng ví dụHãy sử dụng một cơ sở dữ liệu mẫu để minh họa cách chúng ta có thể sử dụng hàm DENSE_RANK(). Đối với ví dụ này, chúng ta sẽ sử dụng cơ sở dữ liệu Sakila và cụ thể hơn là bảng phim trong cơ sở dữ liệu Sakila Sử dụng hàm DENSE_RANK(), chúng ta có thể xếp hạng các bộ phim theo tỷ lệ cho thuê của chúng, như được hiển thị trong truy vấn bên dưới SỬ DỤNG sakila ; Do lượng dữ liệu trên cơ sở dữ liệu Sakila rất lớn, tôi sẽ sắp xếp lại đầu ra để dễ đọc và minh họa hơn Đầu ra dưới đây Nếu bạn xem kỹ kết quả ở trên, bạn sẽ nhận thấy rằng kết quả đầu ra nằm trong khoảng từ hạng 1 đến hạng 3, tương ứng với các giá trị cho thuê_rate trong bảng phim. Các giá trị Rent_rate là
Trong ví dụ trên, chúng tôi đã sử dụng mệnh đề partition by để chia các tập kết quả thành các phân vùng khác nhau, trong trường hợp này là release_year Tiếp theo, chúng tôi đã sử dụng thứ tự MySQL theo câu lệnh để sắp xếp các bộ phim theo tỷ lệ cho thuê theo thứ tự tăng dần. Cuối cùng, chúng tôi đã áp dụng hàm DENSE_RANK() trên từng phân vùng được chỉ định theo thứ tự theo câu lệnh Sự kết luậnTrong hướng dẫn này, chúng tôi đã giải thích cách hoạt động của hàm DENSE_RANK() trong cơ sở dữ liệu và sử dụng một ví dụ thực tế để minh họa cách sử dụng hàm này Một chức năng cửa sổ trong MYSQL thường để tính toán một tập hợp các hàng liên quan đến hàng hiện tại. Hàng hiện tại là hàng mà hàm dựa vào để tính toán. Hàm cửa sổ được thực hiện một phép tính tương tự như khi sử dụng các hàm tổng hợp (hàm tổng hợp). Nhưng không giống các hàm tổng hợp thực hiện thao tác trên toàn bộ bảng, hàm windown không trả về kết quả được tổng hợp thành một hàng. Vd. Hàm đếm(row_name) trả về một hàng chứa số lượng hàng của câu truy vấn. Còn với chức năng cửa sổ, nó thao tác với một tập hợp các hàng và tạo ra một kết quả phù hợp với từng hàng. Điều này cho phép mỗi hàng có thể duy trì sự độc lập của mình 1. Cú pháp của chức năng cửa sổDưới đây là cú pháp mẫu của chức năng cửa sổ
Trong cấu trúc trên, đầu tiên là tên của hàm kèm theo một biểu thức. Sau đó chúng ta chỉ định mệnh đề QUÁ bao gồm 3 biểu thức. định nghĩa_phân vùng, định nghĩa_thứ tự, định nghĩa_khung.
2. Phân vùng mệnh đềMệnh đề này được sử dụng để lọc bảng dựa trên các thuộc tính của các vùng. Chức năng cửa sổ được kích hoạt trong từng vùng, khi vượt qua ranh giới của vùng đó, nó sẽ được khởi động lại. Dưới đây là cú pháp của mệnh đề. 3. Mệnh đề sắp xếp theoMệnh đề này dùng để sắp xếp các hàng trong một vùng với cú pháp. 4. Khung mệnh đềMột khung là một tập tin hiện tại của vùng như hình vẽ. The ta could create ra 1 frame theo cú pháp. ______4 Trong cú pháp frame_unit có 2 giá trị để lựa chọn ROWS hoặc RANGE.
5. Ví dụVới bài Leetcode 185. Bộ phận Ba mức lương hàng đầu. Ta có lời giải thích như sau.
6. Các liên kết tham khảo
|