いくつかのカウンター値を更新するテーブル T1 を取得しました
id, unix_time_stamp, counter1, counter10
1 , 1333435800 , 55 , 80
次に、これらの値をコピーするテーブル T2 を取得しました
id, unix_time_stamp, counter1, counter10, value1, value10
1 , 1333435800 , 55 , 80 , 0 , 0
2 , 1333435801 , 60 , 87 , 5 , 7
3 , 1333435802 , 70 , 90 , 10 , 3
3 , 1333435804 , 80 , 100 , 5 , 5
これは、いくつかのトリガー関数で行われます
INSERT INTO T2 (unix_time_stamp, counter1, counter10) SELECT unix_time_stamp, counter1, counter10 FROM T1 WHERE id=1
私が欲しいのは、value1、value10を次のように計算することです
(current_counter1 - last_counter1)/(current_time - last_time)
このインサートに入れます。
たとえば、タイムスタンプが 1333435804 の値 1 は次のようになります。
value1=(80-70)/(1333435804-1333435802) = 5
言い換えれば
insert into t2
(unix_time_stamp, counter1, counter10, value1)
SELECT unix_time_stamp, counter1, counter10,
(counter1 - (select counter1 from T1 order by unix_time_stamp DESC LIMIT 1)/
(unix_time_stamp - (select unix_time_stamp from T1 order by unix_time_stamp DESC LIMIT 1)
FROM T1 WHERE id=1
しかし、私は10個のカウンターを持っているので、これを少し短いバージョンにしたい:)
全体の状況は少し複雑で、SQL の外部でこれを行わない理由がいくつかあります
私はsqliteを使用しています
これは私にとって非常に複雑です:)助けてください。