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

Kelompokkan menurut interval data

WITH t AS (
   SELECT ts, (random()*100)::int AS bandwidth
   FROM   generate_series('2012-09-01', '2012-09-04', '1 minute'::interval) ts
   )

SELECT date_trunc('hour', ts) AS hour_stump
      ,(extract(minute FROM ts)::int / 15) AS min15_slot
      ,count(*) AS rows_in_timeslice               -- optional
      ,sum(bandwidth) AS sum_bandwidth
FROM   t
WHERE  ts >= '2012-09-02 00:00:00+02'::timestamptz -- user's time range
AND    ts <  '2012-09-03 00:00:00+02'::timestamptz -- careful with borders 
GROUP  BY 1, 2
ORDER  BY 1, 2;

t CTE menyediakan data seperti yang mungkin dimiliki tabel Anda:satu stempel waktu ts per menit dengan bandwidth nomor. (Anda tidak memerlukan bagian itu, Anda bekerja dengan meja Anda saja.)

Berikut adalah solusi yang sangat mirip untuk pertanyaan yang sangat mirip - dengan penjelasan mendetail tentang cara kerja agregasi khusus ini:

  • date_trunc interval 5 menit di PostgreSQL

Berikut adalah solusi serupa untuk pertanyaan serupa tentang berjalan sums - dengan penjelasan mendetail dan tautan untuk berbagai fungsi yang digunakan:

  • PostgreSQL:menjalankan hitungan baris untuk kueri 'menurut menit'

Pertanyaan tambahan di komentar

WITH -- same as above ...

SELECT DISTINCT ON (1,2)
       date_trunc('hour', ts) AS hour_stump
      ,(extract(minute FROM ts)::int / 15) AS min15_slot
      ,bandwidth AS bandwith_sample_at_min15
FROM   t
WHERE  ts >= '2012-09-02 00:00:00+02'::timestamptz
AND    ts <  '2012-09-03 00:00:00+02'::timestamptz
ORDER  BY 1, 2, ts DESC;

Mengambil satu sampel tidak teragregasi per interval 15 menit - dari baris terakhir yang tersedia di jendela. Ini akan menjadi menit ke-15 jika baris tidak hilang. Bagian penting DISTINCT ON dan ORDER BY .
Informasi lebih lanjut tentang teknik yang digunakan di sini:

  • Pilih baris pertama di setiap grup GROUP BY?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Migrasi PostgreSQL ke Cloud - Membandingkan Solusi dari Amazon, Google &Microsoft

  2. Apakah ada cara untuk menonaktifkan pembaruan/penghapusan tetapi masih mengizinkan pemicu untuk melakukannya?

  3. Fungsi SQL sangat lambat dibandingkan dengan kueri tanpa pembungkus fungsi

  4. bagaimana cara menjalankan skrip .sql di heroku?

  5. Basis Data PostgreSQL Saya Kehabisan Ruang Disk