PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Nilai agregat selama rentang jam, setiap jam

fungsi jendela dengan kustom bingkai membuat ini sangat sederhana :

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

Demo langsung di sqlfiddle.

Bingkai untuk setiap rata-rata adalah baris saat ini ditambah 7. Ini mengasumsikan Anda memiliki tepat satu baris untuk setiap jam. Data sampel Anda tampaknya menyiratkan hal itu, tetapi Anda tidak menentukannya.

Begini caranya, avg_8h untuk final (menurut ts ) 7 baris himpunan dihitung dengan lebih sedikit baris, sampai nilai baris terakhir sama dengan rata-ratanya sendiri. Anda tidak menentukan bagaimana menangani kasus khusus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan Rails/Postgresql SQL dengan Tanggal

  2. Postgres tidak mengembalikan lastval() dengan benar

  3. Transpose baris dan kolom (alias pivot) hanya dengan minimum COUNT()?

  4. PostgreSQL memeriksa apakah bidang stempel waktu kosong

  5. Menghasilkan kolom secara dinamis di PostgreSQL