0

Data というモデルと、timestamp、value1、および value2 といういくつかの列があります。ハイストックチャートで使用したいと思います。

チャートが印刷される前に、いくつかの計算が必要です。

value1 を value2 で割った結果 (value1/value2) を日ごと、月ごと、または年ごとにまとめて [[timestamp_day, value1/value2], [...], ...] のように配列に入れます。

「タイムスタンプのグループ化」ができました。しかし、私は value1/value2 を要約するのを待っています。

.sum(value1/value2) のようにする方法はありますか? または、計算を行う仮想列を定義する方法はありますか?

よろしくお願いします、 アンドレアス

4

2 に答える 2

1

@array = @collection.collect { |c| [v.timestamp, (v.value1+v.value2 /3)] }

@collection は、すべてのデータのコレクション/配列です

@array は、collect が実行された後、[[timestamp_day, value1/value2], [...], ...] の形式になります。

明確でないことの 1 つは、分母が何であるかです。ここでは「3」を使用していますが、何でもかまいません。複雑な操作の場合は、別のメソッドを呼び出して取得することもできます。

于 2014-02-25T01:19:45.723 に答える
1

計算された値をデータベースから取得しようとしている場合は、式をアクティブなレコード合計関数に渡すことができます。

Data.group(:timestamp).sum("value1 / value2")
于 2014-02-24T23:24:18.450 に答える