Sql Postgres:根据时间戳对平均值进行分组

Sql Postgres:根据时间戳对平均值进行分组,sql,database,postgresql,date,group-by,Sql,Database,Postgresql,Date,Group By,我在尝试创建执行以下操作的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:

我在尝试创建执行以下操作的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

就我所知。如果需要任何帮助,我们将不胜感激。

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

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

谢谢你的及时回复。我刚刚意识到我还需要以某种方式指定开始/停止数字的开始/结束日期。我将编辑原始问题。更新:解决它。再次感谢!