Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

3.5. Chức năng kèo bóng đá pháp sổ

AHàm kèo bóng đá pháp sổThực hiện tính toán trên một tập hợp các hàng bảng có liên quan bằng cách nào đó liên quan đến hàng hiện tại. Điều này có thể so sánh với loại tính toán có thể được thực hiện với một hàm tổng hợp. Nhưng không giống như các hàm tổng hợp thông thường, việc sử dụng hàm kèo bóng đá pháp sổ không khiến các hàng được nhóm thành một hàng đầu ra duy nhất - các hàng giữ lại danh tính riêng biệt của chúng. Đằng sau hậu trường, chức năng kèo bóng đá pháp sổ có thể truy cập nhiều hơn là hàng hiện tại của kết quả truy vấn.

Đây là một ví dụ cho thấy cách so sánh mức lương của mỗi nhân viên với mức lương trung bình trong bộ phận của mình:

9929_10017
depname | empno | Mức lương |          AVG          
-----------+-------+--------+---------------------------
 Phát triển |    11 |   5200 | 5020.0000000000000000
 Phát triển |     7 |   4200 | 5020.0000000000000000
 Phát triển |     9 |   4500 | 5020.0000000000000000
 Phát triển |     8 |   6000 | 5020.0000000000000000
 Phát triển |    10 |   5200 | 5020.0000000000000000
 nhân sự |     5 |   3500 | 3700.0000000000000000
 nhân sự |     2 |   3900 | 3700.0000000000000000
 Bán kèo bóng đá pháp |     3 |   4800 | 4866.6666666666666667
 Bán kèo bóng đá pháp |     1 |   5000 | 4866.6666666666666667
 Bán kèo bóng đá pháp |     4 |   4800 | 4866.6666666666666667
(10 kèo bóng đá pháp)

Ba cột đầu ra đầu tiên đến trực tiếp từ bảngEMPSALARYvà có một kèo bóng đá pháp đầu ra cho mỗi kèo bóng đá pháp trong bảng. Cột thứ tư biểu thị mức trung bình được thực hiện trên tất cả các kèo bóng đá pháp bảng có cùng10956_10965Giá trị là kèo bóng đá pháp hiện tại. (Đây thực sự là cùng một chức năng với thông thườngAVGHàm tổng hợp, nhưngOvermệnh đề gây ra nó được coi là hàm kèo bóng đá pháp sổ và được tính toán trên một tập hợp các hàng thích hợp.)

Cuộc gọi chức năng kèo bóng đá pháp sổ luôn chứaOvermệnh đề trực tiếp theo tên và đối số của hàm kèo bóng đá pháp sổ. Đây là những gì phân biệt cú pháp nó với hàm hoặc hàm tổng hợp thông thường. TheOvermệnh đề xác định chính xác cách các hàng của truy vấn được chia để xử lý theo hàm kèo bóng đá pháp sổ. ThePhân vùng bởiDanh sách trongOverChỉ định chia các kèo bóng đá pháp thành các nhóm hoặc phân vùng, chia sẻ cùng các giá trị củaPhân vùng bởiBiểu thức. Đối với mỗi hàng, hàm kèo bóng đá pháp sổ được tính toán trên các hàng rơi vào cùng một phân vùng với hàng hiện tại.

Bạn cũng có thể kiểm soát thứ tự trong đó các hàng được xử lý bởi các chức năng kèo bóng đá pháp sổ bằng cách sử dụngĐặt kèo bóng đá pháp bởitrongOver. (kèo bóng đá pháp sổđặt kèo bóng đá pháp bởiThậm chí không phải khớp với thứ tự trong đó các kèo bóng đá pháp được đầu ra.) Đây là một ví dụ:

12291_12402
depname | empno | Mức lương | thứ hạng 
-----------+-------+--------+------
 Phát triển |     8 |   6000 |    1
 Phát triển |    10 |   5200 |    2
 Phát triển |    11 |   5200 |    2
 Phát triển |     9 |   4500 |    4
 Phát triển |     7 |   4200 |    5
 nhân sự |     2 |   3900 |    1
 nhân sự |     5 |   3500 |    2
 Bán kèo bóng đá pháp |     1 |   5000 |    1
 Bán kèo bóng đá pháp |     4 |   4800 |    2
 Bán kèo bóng đá pháp |     3 |   4800 |    2
(10 kèo bóng đá pháp)

Như được hiển thị ở đây,Xếp hạngHàm tạo ra thứ hạng số trong phân vùng của kèo bóng đá pháp hiện tại cho mỗi khác biệtĐặt kèo bóng đá pháp bởiGiá trị, theo thứ tự được xác định bởiĐặt kèo bóng đá pháp bởimệnh đề.Xếp hạngKhông cần tham số rõ ràng, vì hành vi của nó hoàn toàn được xác định bởiOvermệnh đề.

Các hàng được xem xét bởi hàm kèo bóng đá pháp sổ là của"Bảng ảo"Được sản xuất bởi truy vấntừmệnh đề được lọc bởiWHERE, Nhóm bởimệnh đề nếu có. Ví dụ: một kèo bóng đá pháp bị xóa vì nó không đáp ứngWHEREĐiều kiện không được nhìn thấy bởi bất kỳ chức năng kèo bóng đá pháp sổ nào. Truy vấn có thể chứa nhiều chức năng kèo bóng đá pháp sổ cắt dữ liệu theo các cách khác nhau bằng các phương tiện khác nhauOvermệnh đề, nhưng tất cả chúng đều hoạt động trên cùng một bộ sưu tập các kèo bóng đá pháp được xác định bởi bảng ảo này.

Chúng ta đã thấy điều đóĐặt kèo bóng đá pháp bởicó thể được bỏ qua nếu thứ tự của các kèo bóng đá pháp không quan trọng. Nó cũng có thể bỏ quaPhân vùng bởi, trong trường hợp đó chỉ có một phân vùng chứa tất cả các kèo bóng đá pháp.

Có một khái niệm quan trọng khác liên quan đến các chức năng kèo bóng đá pháp sổ: Đối với mỗi hàng, có một tập hợp các hàng trong phân vùng của nó được gọi là của nókhung kèo bóng đá pháp sổ. Nhiều (nhưng không phải tất cả) các chức năng kèo bóng đá pháp sổ chỉ hoạt động trên các hàng của khung kèo bóng đá pháp sổ, thay vì toàn bộ phân vùng. Theo mặc định, nếuđặt kèo bóng đá pháp bởi14539_14725Đặt kèo bóng đá pháp bởimệnh đề. Khiđặt kèo bóng đá pháp bởiđược bỏ qua khung mặc định bao gồm tất cả các kèo bóng đá pháp trong phân vùng.[1]Đây là một ví dụ sử dụngSum:

Chọn mức lương, tổng (tiền lương) trên () từ empsalary;
15130_15335

ở trên, vì không cóĐặt kèo bóng đá pháp bởitrongOvermệnh đề, khung kèo bóng đá pháp sổ giống như phân vùng, vì thiếuPhân vùng bởilà toàn bộ bảng; Nói cách khác, mỗi tổng được lấy trên toàn bộ bảng và vì vậy chúng tôi nhận được kết quả tương tự cho mỗi kèo bóng đá pháp đầu ra. Nhưng nếu chúng ta thêm mộtĐặt kèo bóng đá pháp bởimệnh đề, chúng tôi nhận được kết quả rất khác nhau:

15797_15864
Mức lương |  tổng  
--------+-------
   3500 |  3500
   3900 |  7400
   4200 | 11600
   4500 | 16100
   4800 | 25700
   4800 | 25700
   5000 | 30700
   5200 | 41100
   5200 | 41100
   6000 | 47100
(10 kèo bóng đá pháp)

16102_16278

Các chức năng kèo bóng đá pháp sổ chỉ được phép trongChọnDanh sách vàĐặt kèo bóng đá pháp bởimệnh đề của truy vấn. Họ bị cấm ở nơi khác, chẳng hạn như trongNhóm bởi, WHEREmệnh đề. Điều này là do họ thực hiện một cách hợp lý sau khi xử lý các điều khoản đó. Ngoài ra, các chức năng kèo bóng đá pháp sổ thực thi sau các chức năng tổng hợp thông thường. Điều này có nghĩa là nó hợp lệ khi bao gồm một cuộc gọi chức năng tổng hợp trong các đối số của hàm kèo bóng đá pháp sổ, nhưng không phải ngược lại.

Nếu có nhu cầu lọc hoặc hàng nhóm sau khi tính toán kèo bóng đá pháp sổ được thực hiện, bạn có thể sử dụng một lựa chọn phụ. Ví dụ:

17009_17233

Truy vấn trên chỉ hiển thị các kèo bóng đá pháp từ truy vấn bên trong cóXếp hạngnhỏ hơn 3.

Khi truy vấn liên quan đến nhiều chức năng kèo bóng đá pháp sổ, có thể viết ra từng chức năng riêngOvermệnh đề, nhưng điều này là trùng lặp và dễ bị lỗi nếu hành vi kèo bóng đá pháp sổ tương tự được muốn đối với một số chức năng. Thay vào đó, mỗi hành vi kèo bóng đá pháp sổ có thể được đặt tên trong mộtWindowmệnh đề và sau đó được tham chiếu trongOver. Ví dụ:

Chọn tổng (tiền lương) qua W, AVG (tiền lương)
  Từ empsalary
  Window W AS (phân vùng theo thứ tự depname theo mức lương desc);

Thông tin chi tiết về các chức năng kèo bóng đá pháp sổ có thể được tìm thấy trongPhần 4.2.8, Phần 9,21, Phần 7.2.5ChọnTrang tham khảo.

ghi chú

[1]

Có các tùy chọn để xác định khung kèo bóng đá pháp sổ theo những cách khác, nhưng hướng dẫn này không bao gồm chúng. Nhìn thấyPhần 4.2.8Để biết chi tiết.