4

使用 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 分钟)。

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

4

1 回答 1

3

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;
于 2012-11-23T09:50:27.420 回答