2016-04-29 12 views
0

Ich habe eine Tabelle - BusInfo, die speichert, wie viele Passagiere in den Bus steigen und wie viele Plätze er/sie besetzen kann (1 oder mehr, je nach Taschen, die er/sie hat). Ich habe für it-Postgres - Abfrage Zeitreihen Gruppe nach Intervall

http://sqlfiddle.com/#!15/88226/11

start      end     bus_name seats start_time ride_time 
April, 28 2016 17:00:00 April, 28 2016 18:00:00 CA  2 1461862800  3600 
April, 28 2016 17:30:00 April, 28 2016 18:30:00 CA  1 1461864600  3600 
April, 28 2016 17:45:00 April, 28 2016 18:45:00 CA  2 1461865500  3600 
April, 28 2016 17:00:00 April, 28 2016 19:00:00 CA  1 1461862800  7200 
April, 28 2016 17:00:00 April, 28 2016 17:30:00 CA  2 1461862800  1800 

Ich möchte eine Geige erstellt eine Abfrage auszuführen, die bei 10 der Sitzbelegung bekommt min wie diese interval.Something ist die erwartete Ausgabe

datetime | seats occupied at the time 
17:00 5 
17:10 5 
17:20 5 
17:30 4 
17:40 4 
17:50 6 
18:00 4 

ich habe versucht, von der Gruppe, aber bekam keine closer-

select to_char(to_timestamp(floor((extract('epoch' from to_timestamp(start_time))/ 600))*600),'yyyy/MM/dd HH24:MI'), 
       sum(seats) from businfo 

where start_time >= 1461862800 and start_time <= 1461866400 
and (start_time+ride_time) >= (1461862800) 
group by to_char(to_timestamp(floor((extract('epoch' from  
to_timestamp(start_time))/ 600))*600),'yyyy/MM/dd HH24:MI') 
order by to_char(to_timestamp(floor((extract('epoch' from 
     to_timestamp(start_time))/ 600))*600),'yyyy/MM/dd HH24:MI') ASC 

Irgendwelche Ideen?

Antwort

0

Ein Verfahren verwendet generate_series():

select gs.ts, sum(seats) 
from generate_series('2016-04-28 17:00:00'::timestamp, '2016-04-28 18:00:00', interval '10 minute') gs(ts) join 
    businfo bi 
    on gs.ts between bi.start and bi.end 
group by gs.ts 
order by gs.ts; 
+0

Dank für Ihre Antwort. Die Abfrage gibt die erwarteten Ergebnisse zurück, ist aber sehr langsam, obwohl ich keine wirklich große Datenbank habe. Wie kann ich es optimieren? Kann mit dem Hinzufügen von Indizes beginnen. – Harpreet

+0

Kann ich vorschlagen, dass Sie eine andere Frage stellen, explizit über die Leistung? –