首页 > 解决方案 > Postgres:从时间戳中分组平均值

问题描述

我在尝试创建执行以下操作的 PostgreSQL 查询时遇到一些问题:

数据看起来像这样:

|colour | start | stop |
|blue|2020-02-03 22:18:08.561+00|2020-02-03 22:18:09.674+00|
|blue|2020-02-03 22:18:37.902+00|2020-02-03 22:18:40.479+00|
|red|2020-02-03 22:18:41.121+00|2020-02-03 22:18:42.272+00|
|green|2020-02-03 22:18:41.113+00|2020-02-03 22:18:42.835+00|
|red|2020-02-03 22:18:41.105+00|2020-02-03 22:18:43.223+00|

到目前为止,我只使用以下方法获得了持续时间(以秒为单位):

SELECT colour, start, stop, 
EXTRACT(EPOCH FROM (stop - start)) as durationSeconds
FROM public.colour_record

这就是我所得到的。任何帮助将不胜感激。

标签: sqldatabasepostgresqldategroup-by

解决方案


我想要每种颜色的平均持续时间,您可以按如下方式使用聚合:

select 
    colour, 
    avg(extract(epoch from (stop - start))) as avg_duration_seconds
from public.colour_record
group by colour

推荐阅读