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 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2

2.7. Hàm tổng kèo bóng đá hôm nay và ngày mai

Giống như hầu hết kèo bóng đá hôm nay và ngày mai sản phẩm cơ sở dữ liệu quan hệ khác,PostgreSQLHỗ trợHàm tổng kèo bóng đá hôm nay và ngày mai. Một hàm tổng kèo bóng đá hôm nay và ngày mai tính toán một kết quả duy nhất từ ​​nhiều hàng đầu vào. Ví dụ: có các tập kèo bóng đá hôm nay và ngày mai để tính toánĐếm, Sum, AVG(trung bình),Max(tối đa) vàmin(tối thiểu) trên một tập kèo bóng đá hôm nay và ngày mai các hàng.

Ví dụ, chúng ta có thể tìm thấy cách đọc nhiệt độ thấp nhất ở bất cứ đâu với:

Chọn tối đa (temp_lo) từ thời tiết;
Max
-----
  46
(1 hàng)

Nếu chúng ta muốn biết thành phố nào (hoặc thành phố) mà đọc xảy ra, chúng ta có thể thử:

Chọn thành phố từ thời tiết nơi temp_lo = max (temp_lo);sai

Nhưng điều này sẽ không hoạt động vì tổng kèo bóng đá hôm nay và ngày maiMaxKhông thể được sử dụng trongWHEREmệnh đề. (Hạn chế này tồn tại vìWHEREmệnh đề xác định các hàng nào sẽ được bao gồm trong tính toán tổng kèo bóng đá hôm nay và ngày mai; Vì vậy, rõ ràng nó phải được đánh giá trước khi các hàm tổng kèo bóng đá hôm nay và ngày mai được tính toán.) Tuy nhiên, như thường lệ, truy vấn có thể được khôi phục để hoàn thành kết quả mong muốn, ở đây bằng cách sử dụngSBURERY:

Chọn thành phố từ thời tiết
    Trong đó temp_lo = (chọn tối đa (temp_lo) từ thời tiết);
Thành phố
---------------
 San Francisco
(1 hàng)

12386_12535

Tổng kèo bóng đá hôm nay và ngày mai cũng rất hữu ích khi kết kèo bóng đá hôm nay và ngày mai vớiNhóm bởimệnh đề. Ví dụ: chúng ta có thể nhận được số lượng bài đọc và nhiệt độ thấp tối đa quan sát được ở mỗi thành phố với:

Chọn Thành phố, Đếm (*), Max (TEMP_LO)
    Từ thời tiết
    Theo nhóm theo thành phố;
Thành phố | Đếm | Tối đa
---------------+-------+-----
 Hayward |     1 |  37
 San Francisco |     2 |  46
(2 hàng)

cung cấp cho chúng ta một hàng đầu ra cho mỗi thành phố. Mỗi kết quả tổng kèo bóng đá hôm nay và ngày mai được tính toán trên các hàng bảng phù kèo bóng đá hôm nay và ngày mai với thành phố đó. Chúng ta có thể lọc các hàng được nhóm này bằng:

Chọn Thành phố, Đếm (*), Max (Temp_LO)
    Từ thời tiết
    Nhóm từng thành phố
    Có tối đa (temp_lo) <40;
Thành phố | Đếm | Tối đa
---------+-------+-----
 Hayward |     1 |  37
(1 hàng)

cung cấp cho chúng ta kết quả tương tự chỉ cho kèo bóng đá hôm nay và ngày mai thành phố có tất cảTEMP_LOGiá trị dưới 40. Cuối cùng, nếu chúng ta chỉ quan tâm đến kèo bóng đá hôm nay và ngày mai thành phố có tên bắt đầu bằngS, chúng ta có thể làm:

Chọn Thành phố, Đếm (*), Max (Temp_LO)
    Từ thời tiết
    Nơi thành phố thích 's%' -(1)
    Theo nhóm theo thành phố;
Thành phố | Đếm | Tối đa
---------------+-------+-----
 San Francisco |     2 |  46
(1 hàng)

(1)

Thenhưtoán tử không khớp mẫu và được giải thích trongPhần 9.7.

Điều quan trọng là phải hiểu sự tương tác giữa các tập kèo bóng đá hôm nay và ngày mai vàSQL'sWHEREmệnh đề. Sự khác biệt cơ bản giữaWHERECó phải thế này:WHEREChọn các hàng đầu vào trước khi các nhóm và tổng kèo bóng đá hôm nay và ngày mai được tính toán (do đó, nó điều khiển các hàng đi vào tính toán tổng kèo bóng đá hôm nay và ngày mai), trong khiChọn các hàng nhóm sau các nhóm và tổng kèo bóng đá hôm nay và ngày mai được tính toán. Do đó,WHEREmệnh đề không được chứa các hàm tổng kèo bóng đá hôm nay và ngày mai; Không có ý nghĩa gì khi cố gắng sử dụng một tổng kèo bóng đá hôm nay và ngày mai để xác định các hàng nào sẽ là đầu vào cho các tập kèo bóng đá hôm nay và ngày mai. Mặt khác,mệnh đề luôn chứa các hàm tổng kèo bóng đá hôm nay và ngày mai. (Nói đúng ra, bạn được phép viết mộtmệnh đề không sử dụng cốt liệu, nhưng hiếm khi hữu ích. Điều kiện tương tự có thể được sử dụng hiệu quả hơn tạiWHEREGiai đoạn.)

Trong ví dụ trước, chúng ta có thể áp dụng hạn chế tên thành phố trongWHERE, vì nó không cần tổng kèo bóng đá hôm nay và ngày mai. Điều này hiệu quả hơn so với việc thêm hạn chế vào, bởi vì chúng tôi tránh thực hiện các tính toán nhóm và tổng kèo bóng đá hôm nay và ngày mai cho tất cả các hàng không thành côngWHEREKiểm tra.

Một cách khác để chọn các hàng đi vào tính toán tổng kèo bóng đá hôm nay và ngày mai là sử dụngbộ lọc, đó là một tùy chọn tổng kèo bóng đá hôm nay và ngày mai:

Chọn City, Count (*) Bộ lọc (trong đó Temp_lo <45), Max (Temp_LO)
    Từ thời tiết
    Theo nhóm theo thành phố;
Thành phố | Đếm | Tối đa
---------------+-------+-----
 Hayward |     1 |  37
 San Francisco |     1 |  46
(2 hàng)

Filtergiống nhưWHERE, ngoại trừ việc nó chỉ loại bỏ các hàng khỏi đầu vào của hàm tổng kèo bóng đá hôm nay và ngày mai cụ thể mà nó được gắn vào. Ở đây,Đếmkèo bóng đá hôm nay và ngày mai số chỉ số hàng vớiTEMP_LOdưới 45; NhưngMaxTổng kèo bóng đá hôm nay và ngày mai vẫn được áp dụng cho tất cả các hàng, vì vậy nó vẫn tìm thấy việc đọc 46.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù kèo bóng đá hôm nay và ngày mai Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.