PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tổng hợp các giá trị trong một phạm vi hàng giờ, mỗi giờ

chức năng cửa sổ với tùy chỉnh khung làm cho điều này đơn giản đến kinh ngạc :

SELECT ts
      ,avg(val) OVER (ORDER BY ts
                      ROWS BETWEEN CURRENT ROW AND 7 FOLLOWING) AS avg_8h
FROM tbl;

Bản trình diễn trực tiếp trên sqlfiddle.

Khung cho mỗi mức trung bình là hàng hiện tại cộng với hàng sau 7. Điều này giả sử bạn có chính xác một hàng cho mỗi giờ. Dữ liệu mẫu của bạn dường như ngụ ý điều đó, nhưng bạn không chỉ định.

Nguyên tắc là, avg_8h cho trận chung kết (theo ts ) 7 hàng của tập hợp được tính với ít hàng hơn, cho đến khi giá trị của hàng cuối cùng bằng giá trị trung bình của chính nó. Bạn không chỉ rõ cách giải quyết trường hợp đặc biệt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận các giá trị mặc định của các cột trong bảng trong Postgres?

  2. cách tạo bảng với các giá trị được tổng hợp theo năm trong postgres

  3. Tránh chèn giá trị 'null' vào bảng cơ sở dữ liệu qua JPA

  4. Chọn các cột có DISTINCT trong PostgreSQL

  5. PostgreSQL PL / Python:gọi thủ tục được lưu trữ trong virtualenv