Mệnh đề SQL OVER

Menh De Sql Over



Một trong những tính năng nâng cao nhất của SQL là mệnh đề OVER. Đây là một tính năng cho phép chúng ta thực hiện các phép tính và áp dụng các hàm cửa sổ SQL trên một tập hợp con các hàng cụ thể trong một tập kết quả nhất định.

Nó đặc biệt hữu ích khi bạn cần tính toán tổng hợp hoặc xếp hạng cho các nhóm hàng mà không thực sự thu gọn toàn bộ tập hợp kết quả.

Hãy tham gia cùng chúng tôi trong hướng dẫn này khi chúng tôi tìm hiểu mọi thứ cần biết để giúp bạn bắt đầu làm việc với mệnh đề OVER.







Yêu cầu:

Trước khi chúng ta đi sâu vào chức năng và hoạt động của mệnh đề OVER, hãy đảm bảo rằng bạn đã nắm vững kiến ​​thức cơ bản về SQL. Chúng tôi cũng giả định rằng bạn có quyền truy cập vào cơ sở dữ liệu mà bạn có thể sử dụng để kiểm tra kiến ​​thức của mình.



Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng cơ sở dữ liệu MySQL với cơ sở dữ liệu mẫu Sakila. Chỉ cần đảm bảo rằng bạn có đủ quyền và công cụ cơ sở dữ liệu của bạn hỗ trợ các chức năng của cửa sổ.



Cú pháp:

Như chúng tôi đã đề cập trước đó, trong hầu hết các trường hợp, chúng tôi chủ yếu sử dụng mệnh đề OVER kết hợp với các hàm cửa sổ.





Như vậy, chúng ta có thể diễn đạt cú pháp của mệnh đề như sau:

(biểu thức) QUÁ (

[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], ...]

[thông số khung]

)

Theo cú pháp đã cho, chúng ta có thể chia nhỏ từng thành phần như sau:



  1. – Nó đề cập đến hàm cửa sổ mà chúng ta muốn áp dụng trên một cửa sổ hàng cụ thể như SUM(), AVG(), ROW_NUMBER(), RANK, v.v.
  2. Biểu thức – Điều này chỉ định một cột hoặc biểu thức mà hàm cửa sổ được áp dụng.
  3. PHẦN THAM GIA BỞI – Đây là mệnh đề tùy chọn chia tập kết quả thành các phân vùng trong đó mỗi phân vùng giống như một đơn vị riêng biệt nơi hàm được áp dụng. Các hàng trong cùng một phân vùng có cùng giá trị trong các cột được chỉ định.
  4. ORDER BY - Điều này chỉ định thứ tự xử lý các hàng trong mỗi phân vùng.
  5. frame_specification – Đây là mệnh đề tùy chọn xác định khung của các hàng trong phân vùng. Thông số khung phổ biến bao gồm HÀNG GIỮA hoặc PHẠM VI GIỮA

Ngoài ra, chúng ta hãy khám phá một số ví dụ thực tế về cách sử dụng nó.

Ví dụ:

Hãy để chúng tôi trình bày cách sử dụng mệnh đề bằng cơ sở dữ liệu mẫu Sakila. Hãy xem xét một ví dụ trong đó chúng ta cần xác định tổng doanh thu cho từng loại phim.

Chúng ta có thể sử dụng hàm cửa sổ tổng với mệnh đề OVER và một loạt câu lệnh nối như trong ví dụ sau:

LỰA CHỌN
Category.name AS Category_name,
phim.title AS phim_title,
phim.rental_rate,
TỔNG(thanh toán.số tiền) TRÊN (PHẦN THAM GIA THEO danh mục.tên) NHƯ tổng_doanh thu
TỪ
phim ảnh
THAM GIA
phim_category BẬT
phim.film_id = phim_category.film_id
THAM GIA
danh mục BẬT
phim_category.category_id = Category.category_id
THAM GIA
hàng tồn kho BẬT
phim.film_id = Inventory.film_id
THAM GIA
cho thuê BẬT
Inventory.inventory_id = Rental.inventory_id
THAM GIA
thanh toán BẬT
Rental.rental_id = Payment.rental_id
ĐẶT BỞI
tên danh mục,
Tên phim;

Trong truy vấn nhất định, chúng tôi bắt đầu bằng cách chọn tiêu đề phim, giá thuê và sử dụng biểu thức tổng (thanh toán.số tiền trên phân vùng theo danh mục.tên) để xác định tổng của từng phân vùng danh mục theo tên danh mục.

Chúng ta phải sử dụng mệnh đề PARTITION BY để đảm bảo rằng việc tính tổng sẽ bắt đầu lại ở mỗi danh mục duy nhất.

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

Ở đó bạn có nó!

Phần kết luận

Trong ví dụ này, chúng ta đã khám phá các nguyên tắc cơ bản khi làm việc với mệnh đề OVER trong SQL. Đây không phải là mệnh đề cơ bản và yêu cầu bạn phải làm quen với các tính năng SQL khác trước đó.