Reputation: 1739
In my PostgreSQL database I have a very large (over 40 mil) row table that represents traffic counts for various locations by 15 minute interval timestamps (contained in the "starttime" column). I want to bin these intervals into hourly intervals to reduce the number of rows.
The format is "timestamp without time zone" so that each record looks like this:
2020-04-26 01:00:00
2020-04-26 01:15:00
2020-04-26 01:30:00
2020-04-26 01:45:00
etc...
What I want to do is take all these 15-min records and "roll them up" into 1 hour intervals so that 01:00:00
- 01:45:00
would equal 01:00:00
(1AM)
My question is similar to this one but the answer is with regard to MySQL and I am not sure if this syntax is appropriate for a Postgres application.
Is there a way I can handle this with an SQL script within Postgres?
Upvotes: 2
Views: 1383
Reputation: 1269553
You would use date_trunc()
. For instance to get the count by hour:
select date_trunc('hour', ts), count(*)
from t
group by date_trunc('hour', ts)
Upvotes: 4