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

Menghasilkan jumlah tiket terbuka dari waktu ke waktu, mengingat tanggal buka dan tutup

Anda dapat menggunakan generate_series() untuk membuat daftar tanggal, lalu left join pada kondisi ketidaksetaraan untuk membawa tabel:

select s.dt, count(t.opened_on) num_open
from generate_series(date '2019-09-01', date '2020-09-01', '1 day') s(dt)
left join mytable t
    on s.dt >= t.opened_on and s.dt < coalesce(t.closed_on, 'infinity')
group by s.dt

Sebenarnya, ini tampaknya sedikit lebih dekat dengan yang Anda inginkan:

select s.dt, count(t.opened_on) num_open
from generate_series(date '2019-09-01', date '2020-09-01', '1 day') s(dt)
left join mytable t
    on s.dt >= t.opened_on::date and s.dt < coalesce(t.closed_on::date, 'infinity')
group by s.dt



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan PostgreSQL untuk mengembalikan hasil sebagai daftar yang dipisahkan koma

  2. Masalah dengan nama kolom berisi titik dua di PostgreSQL

  3. DENGARKAN batas waktu kueri dengan node-postgres?

  4. PostqreSQL di Rails:Bagaimana cara membuat server berjalan secara lokal DAN menerima koneksi pada soket domain Unix?

  5. Cara membuat database PostgreSQL