2016-10-03 13 views
1

私は実行中の合計に関するフォーラムの質問がたくさんあることを知っていますが、どういうわけか私の例にどのように適用するか分かりません。誰かが助けることができたら感謝します。vertica sql:running sum for 1 hour

「スピード」パーティションの時間単位の合計を「ID」で計算しようとしています。これをどうやって進めることができますか?私はverticaデータベースを使用しています。ありがとうございました!

DATETIME,ID,speed 
05-12-15 0:15,1,40 
05-12-15 0:30,1,61 
05-12-15 0:45,1,66 
05-12-15 1:00,1,48 
05-12-15 1:15,1,66 
05-12-15 1:30,1,50 
05-12-15 1:45,1,47 
05-12-15 2:00,1,70 
05-12-15 2:15,1,42 
05-12-15 2:30,1,58 
05-12-15 2:45,1,74 
05-12-15 3:00,1,43 
05-12-15 3:15,1,57 
05-12-15 3:30,1,69 
05-12-15 3:45,1,52 
05-12-15 4:00,1,43 
05-12-15 0:15,2,48 
05-12-15 0:30,2,73 
05-12-15 0:45,2,41 
05-12-15 1:00,2,56 
05-12-15 1:15,2,65 
05-12-15 1:30,2,76 
05-12-15 1:45,2,66 
05-12-15 2:00,2,49 
05-12-15 2:15,2,75 
05-12-15 2:30,2,67 
05-12-15 2:45,2,76 
05-12-15 3:00,2,47 
05-12-15 3:15,2,53 
05-12-15 3:30,2,76 
05-12-15 3:45,2,63 
05-12-15 4:00,2,56 

EDIT:あなたはidで分割しrange between '1 hour' preceding and current rowを使用することができるはずです

enter image description here

+0

SELECT EXTRACT(DATETIME FROM HOUR)、IDのSUM(スピード)とGROUP BY EXTRACT上(DATETIME FROM HOUR)でスタート、ID – smoore4

+0

申し訳ありませんが、私はちょうど私のポストを更新しました〜私はテーブルを集約したくありません、同じ数の行のままにする必要があります。 – Jake

答えて

1

: 最終的な結果は次のようなものでなければなりません。 RANGEは、ウィンドウフレームを制限するためにORDER BYの値に作用します。

select datetime, 
     id, 
     speed, 
     sum(speed) over (partition by id 
         order by datetime desc 
         RANGE BETWEEN '1 hour' PRECEDING 
           AND CURRENT ROW) sum_speed_1hour 
from mytable 
order by id, datetime 

さらに、あなたの例に基づいて探しているものがdatetime descであることに注意してください。

+0

たくさんありがとう@woot! – Jake