【发布时间】:2021-10-23 09:28:14
【问题描述】:
with buses as (
select 10 as id,'warsaw' as origin, 'berlin' as destination, '10:55' as time
union all
select 20 as id,'berlin' as origin, 'paris' as destination, '06:20' as time
union all
select 21 as id,'berlin' as origin, 'paris' as destination, '14:00' as time
union all
select 22 as id,'berlin' as origin, 'paris' as destination, '21:40' as time
union all
select 30 as id,'paris' as origin, 'madrid' as destination, '13:30' as time
),
passengers as (
select 1 as id,'paris' as origin, 'madrid' as destination, '13:30' as time
union all
select 2 as id,'paris' as origin, 'madrid' as destination, '13:31' as time
union all
select 10 as id,'warsaw' as origin, 'paris' as destination, '10:00' as time
union all
select 11 as id,'warsaw' as origin, 'berlin' as destination, '22:31' as time
union all
select 40 as id,'berlin' as origin, 'paris' as destination, '06:15' as time
union all
select 41 as id,'berlin' as origin, 'paris' as destination, '06:50' as time
union all
select 42 as id,'berlin' as origin, 'paris' as destination, '07:12' as time
union all
select 43 as id,'berlin' as origin, 'paris' as destination, '12:03' as time
union all
select 44 as id,'berlin' as origin, 'paris' as destination, '20:00' as time
)
,
c as (select a.id as bus_id,a.origin as bus_origin, a.destination as bus_destination ,a.time as bus_time,
b.id as passenger_id, b.origin as passenger_origin, b.destination as passenger_destination, b.time as passenger_time
from
buses a
join passengers b
on a.origin=b.origin
and a.destination=b.destination
-- and to_timestamp(b.time,'HH24:MI')<=to_timestamp(a.time,'HH24:MI')
-- and to_timestamp(b.time,'HH24:MI')<=to_timestamp('23:59','HH24:MI')
) select * from c
给定上面的输入表,其中对于乘客来说它描述了乘客到达公共汽车站的时间,对于公共汽车来说它描述了公共汽车从公共汽车站离开的时间,我需要找到登上公共汽车的乘客数量.需要得到以下输出:
bus_id - Num_passengers
10 - 0
20- 1
21 - 3
22 - 1
30 - 1
条件:
- 乘客总是登上下一班车。
- 可以假设任何在 23:59 之后到达的乘客都没有乘坐任何公共汽车。
- 即使与巴士发车时间同时到达也可以上车
【问题讨论】:
标签: sql amazon-web-services amazon-redshift