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

Tạo số lượng vé mở theo thời gian, ngày mở và đóng cửa đã cho

Bạn có thể sử dụng generate_series() để xây dựng danh sách ngày, sau đó là left join về các điều kiện bất bình đẳng để đưa ra bảng:

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

Trên thực tế, điều này có vẻ gần hơn một chút với những gì bạn muốn:

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. Làm thế nào để làm việc với PGpoint cho Định vị địa lý bằng PostgreSQL?

  2. Ngăn các chuỗi trống trong trường CHARACTER VARYING

  3. PGError:không có kết nối với máy chủ sau khi không hoạt động

  4. Làm cách nào để so sánh ngày trong các trường datetime trong Postgresql?

  5. Định dạng tháng bằng chữ số La Mã trong PostgreSQL