如何在Rails中的Active Record查询中执行数学计算

时间:2013-04-08 04:22:29

标签: sql ruby-on-rails ruby activerecord rails-activerecord

我正在构建一个应用程序,我发现有必要在我的查询中执行一些简单的数学计算。基本上,我有一个包含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值是否在两个%范围值之间?

或者,如果这是不可能或不好的做法,我应该在哪里处理这个?

1 个答案:

答案 0 :(得分: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