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 に答える