我在Postgres有一个点模式,其中每个出租车旅行的接送时间和位置记录了几个月。我需要计算给定间隔(例如3月5日至3月27日之间)的时间窗口(例如,在00:00和03:00之间)的出租车行程的数量。因此,对于给定的示例,我需要计算在5点到6点,7点,3点和3月27日在00:00和03:00之间发生的总出租车行程。
我找到的唯一一个函数是'date_trunc',但我并不认为它是合适的,因为窗口大小已经固定。
答案 0 :(得分:1)
drop table if exists taxi_trips;
create table taxi_trips
( pickup timestamp
, dropoff timestamp null
, notes varchar(100)
);
insert into taxi_trips (pickup, dropoff, notes) values ('2/28/2018 07:15', '2/28/2018 7:35', 'not found, date too early');
insert into taxi_trips (pickup, dropoff, notes) values ('3/5/2018 01:15', '3/5/2018 1:35', 'found');
insert into taxi_trips (pickup, dropoff, notes) values ('3/5/2018 06:15', '3/5/2018 6:35', 'not found, outside time window');
insert into taxi_trips (pickup, dropoff, notes) values ('3/6/2018 01:15', '3/6/2018 1:35', 'found');
insert into taxi_trips (pickup, dropoff, notes) values ('3/6/2018 06:15', '3/6/2018 6:35', 'not found, outside time window');
insert into taxi_trips (pickup, dropoff, notes) values ('4/1/2018 07:15', '4/1/2018 7:35', 'not found, date too late');
select count(*)
from taxi_trips
where pickup between '3/5/2018' and '3/28/2018'
and extract (hour from pickup) between 0 and 3