【问题标题】:How to perform math calculations in Active Record Querying in Rails如何在 Rails 中的 Active Record 查询中执行数学计算
【发布时间】:2013-04-08 04:22:29
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多