0

アプリケーションを作成していますが、クエリで簡単な数学計算を実行する必要があることがわかりました。基本的に、S&P 500 の日次値を含むデータベースがあり、入力された基準に応じて日のリストを取得する必要があります。

ユーザーは、日の範囲と % の範囲の両方を入力します。たとえば、日付の範囲が 2013 年 1 月 1 日から 2013 年 4 月 1 日で、% の範囲が -1% から 1% の場合、開始日との差が異なる日付間のすべての S%P 500 日次値のリストを返す必要があります。終値は % の範囲にあります。

問題は、実際には %; の列がないことです。始値/終値の列しかありません。始値と終値 (close-open)/open*100 のみを指定して % を計算するのは簡単です。しかし、クエリ内でこれを行う方法がわかりません。

現在、クエリは日付範囲内で正常に検索されています。私のクエリは次のとおりです。

@cases = Close.find(:all, conditions:["date between ? and ?",
    @f_start, @f_end])

しかし、現在の行の (close-open)/open*100 値が 2 つの % 範囲値の間にあるかどうかを確認するにはどうすればよいですか?

または、これが不可能な場合、または悪い慣行である場合、どこでこれを処理する必要がありますか?

4

1 に答える 1

0

Ruby/Rails で始値/終値の範囲を自分で計算し、日付範囲と同じ方法で渡すことができます。何かのようなもの:

percent = @f_percent / 100.0 # 5% => 0.05
low = @f_close * (1.0 - percent)
high = @f_close * (1.0 + percent)
Close.where 'date between ? and ? AND close between ? and ?', \
  @f_start, @f_end, low, high
于 2013-04-08T05:32:11.023 に答える