PostgreSQL 里怎么 group by「临近的时间」?

比如有个表有时间字段 t。我想按临近的时间来进行 group by。比如「临近」的定义为「在五分钟内」,那么把「12:02」和「11:58」放到同一个组里。当然同一个组里可以有很多个时间,它们的最大差值不超过指定的时间差。

阅读 5.3k
2 个回答

抛个砖,不是最准确的,因为是按照绝对时间group的(例如 10:00:00, 10:05:00)
如果要按照当前时间往前推5分钟,可以稍作修改

SELECT
    TIMESTAMP WITH TIME ZONE 'epoch' +
    INTERVAL '1 second' * round((extract('epoch' from t) / 300) * 300) 
    as t,
    count(something)
FROM some table
WHERE …
GROUP BY 
round(extract('epoch' from t) / 300), name
新手上路,请多包涵

非要用SQL的话,应该需要游标之类的。单一GROUP BY应该不能解决楼主的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进