私はデータベースの初心者なので、このデータベースについてあなたの助けを求めています。
時系列データを含むテーブルがあります。
2012/01/01 00:10, 10
2012/01/01 00:30, 5
2012/01/01 01:00, 10
2012/01/01 01:40, 10
2012/01/01 02:00, 20
テーブルは、間隔の上限のみを保持することにより、間隔ベースのデータを格納しています。たとえば、最初の行は値が10の[00:00-00:10]からの間隔を表し、2番目の行は値が5の(00:10-00:30]からの間隔を表し、3番目の行は間隔は(00:30-01:00)で、値は10です。
上記のような構造の時間別データを集約するために、Postgresで効率的なクエリが必要です。したがって、結果は次のようになります。
2012/01/01 00:00, 2012/01/01 01:00, 25
2012/01/01 01:00, 2012/01/01 02:00, 30
時系列データは大きいので、これをインデックス付けする際の助けがあれば非常にありがたいことに注意してください。
ありがとう、ダン
_select
date_trunc('hour', t - interval '1 minute') as interv_start,
date_trunc('hour', t - interval '1 minute') + interval '1 hours' as interv_end,
sum(v)
from myt
group by date_trunc('hour', t - interval '1 minute')
order by interv_start
_
参照 sqlfiddle
インデックスについては、date_trunc('hour', t - interval '1 minute')
で関数インデックスを試すことができますが、postgresqlがそれを使用できるかどうかはわかりません。