sql >> Database >  >> RDS >> PostgreSQL

Het genereren van tellingen van open tickets in de loop van de tijd, gegeven geopende en gesloten datums

U kunt generate_series() . gebruiken om de lijst met datums op te bouwen, en dan een left join over ongelijkheidsvoorwaarden om de tafel te krijgen:

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

Eigenlijk lijkt dit een beetje dichter bij wat je wilt:

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. 'SQLSTATE[HY093]:Ongeldig parameternummer:aantal gebonden variabelen komt niet overeen met aantal tokens'

  2. virtuele velden gebruiken om waarden op te tellen in cakephp

  3. Voorbeelden van het converteren van 'smalldatetime' naar 'datetime' in SQL Server (T-SQL)

  4. Het is tijd dat we de Microsoft Access IDE wat liefde geven