将小时间隔数据分组为每天的平均值

Grouping hour intervaled data into averages per day

我有一个 table,其中包含开始时间、结束时间和交付列。开始和结束时间是不带时区的时间戳数据类型(YYYY-MM-DD HH:MM:SS)。我想编写一个查询脚本,它生成一个包含三列的 table;日期、交货时间和平均花费时间。

换句话说,每一行都包含给定日期的平均送货时间。

我怎样才能做到这一点?

我们可以使用 ::date 提取日期,然后在 group by 中使用它。

select 
  *,
  finishing - starting time_difference
from t
starting            | finishing           | delivery | time_difference
:------------------ | :------------------ | -------: | :--------------
2022-05-07 08:00:00 | 2022-05-07 10:00:00 |        1 | 02:00:00       
2022-05-07 12:00:00 | 2022-05-07 16:00:00 |        2 | 04:00:00       
select 
  starting::date "date",
  AVG(finishing - starting) average_time
from t
group by starting::date
date       | average_time
:--------- | :-----------
2022-05-07 | 03:00:00    

db<>fiddle here