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 maiMax
Không thể được sử dụng trongWHERE
mệnh đề. (Hạn chế này tồn tại vìWHERE
mệ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ởi
mệ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ằngcó
:
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_LO
Giá 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)
Đ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'sWHERE
vàcó
mệnh đề. Sự khác biệt cơ bản giữaWHERE
vàcó
Có phải thế này:WHERE
Chọ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 khicó
Chọ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 đó,WHERE
mệ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,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ộtcó
mệ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ạiWHERE
Giai đ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àocó
, 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ôngWHERE
Kiể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)
Filter
giố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,Đếm
kèo bóng đá hôm nay và ngày mai số chỉ số hàng vớiTEMP_LO
dưới 45; NhưngMax
Tổ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.
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.