将小时间隔数据分组为每天的平均值
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
我有一个 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