按h2数据库中的时间间隔分组

时间:2012-11-23 08:18:28

标签: sql h2 group-by

使用h2数据库我希望在根据时间戳对条目进行分组时获取列的平均值。

我的表格如下:

TIME                    SID             SERVICE         TET     
2012-11-21 11:31:45.433 164DSQL0L4JW7   service1        3868    
2012-11-21 11:31:45.608 164DSS6TJS321   service2        350     
2012-11-21 11:31:45.711 164DSROS9DNXA   service2        285     
2012-11-21 11:31:45.766 164DSH2PMPY4M   service1        4044    
2012-11-21 11:31:45.778 164DSOGRCKG8J   service1        4248    
2012-11-21 11:31:45.82  164DSRMV0QMFT   service1        3766    
2012-11-21 11:31:46.089 164DSP1L9W6MC   service1        4257    
2012-11-21 11:31:46.226 164DSOPUNUFJF   service3        703     
2012-11-21 11:31:46.752 164DSLJHST6E8   service3        411     
2012-11-21 11:31:46.781 164DSHPI1T3J9   service3        393     
2012-11-21 11:31:45.24  164DSQI4RY330   service2        235     
2012-11-21 11:31:45.268 164DSPRDHROQN   service2        197     
2012-11-21 11:31:45.991 164DSRUUGQ8LN   service2        380     
2012-11-21 11:31:46.338 164DSMARDXMD3   service3        783  

我想提取按TET列分组的TET列的平均值。 我希望区间灵活(例如15秒,另一个查询5分钟)。

我发现这个question几乎是我所需要的,但不幸的是我无法让任何解决方案在H2中工作(没有strftime)。

1 个答案:

答案 0 :(得分:1)

H2支持许多日期和时间函数,例如DATEDIFF和DATEADD。例如:

drop table if exists test;
create table test(id int primary key, ts timestamp);
insert into test 
select x, dateadd(s, x, now()) from system_range(1, 100);
select  dateadd(s, datediff(s, now(), ts) / 10 * 10, now()) as diff,
avg(id) from test group by diff order by diff;