Java 表1按小时和平均值分组
我有一个包含id、日期、值的表,如何获得postgresql中的小时平均值Java 表1按小时和平均值分组,java,postgresql,Java,Postgresql,我有一个包含id、日期、值的表,如何获得postgresql中的小时平均值 id date value 3470, 2018-11-15 08:10:00+02, 25,101610.0234375 3467, 2018-11-15 07:53:00+02, 33,101398.984375 3468, 2018-11-15 07:54:00+02, 25,101599.765625 3549, 2018-12-28 18:20:00
id date value
3470, 2018-11-15 08:10:00+02, 25,101610.0234375
3467, 2018-11-15 07:53:00+02, 33,101398.984375
3468, 2018-11-15 07:54:00+02, 25,101599.765625
3549, 2018-12-28 18:20:00+02, 29.21
3550, 2018-12-28 18:24:00+02, 29.21
3551, 2018-12-28 18:27:00+02, 42.21
3552, 2019-01-07 09:42:00+02,
3553, 2019-01-07 09:50:00+02, 15.140000343323
3554, 2019-01-07 09:52:00+02, -1.3799999952316
3555, 2019-01-07 10:03:00+02, 14.949999809265
谢谢。date\u trunc('hour',date)
完成以下工作:
如果要保留时区,需要显式识别它们(date_trunc())消除它们:
SELECT
date_trunc('hour', mydate at time zone '0') at time zone '+2',
avg(value)
FROM
mytable
GROUP BY 1
ORDER BY 1
嗯,您可以将日期截短到最后一个小时(例如,通过
date\u trunc('minute',date)
)并将其分组。记录3552缺少一个值。如果OP希望在每个日期的每一小时都出现,即使没有该小时的数据出现,这也不起作用。@TimBiegeleisen我不相信这是他们所期望的。因为日期范围太大了。在这种情况下会创建许多空记录。是的,伙计们,这解决了我的问题,我在SELECT中的日期之前删除了id,以便它可以生成新的id,这就是我遇到的问题:)非常感谢。
SELECT
date_trunc('hour', mydate at time zone '0') at time zone '+2',
avg(value)
FROM
mytable
GROUP BY 1
ORDER BY 1