Ruby on rails 使用表达式rails对活动记录求和

Ruby on rails 使用表达式rails对活动记录求和,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我的sql视图中有以下代码: SELECT reports.`date` reports.book_title SUM( reports.net_sold_count * reports.avg_list_price / 10 ) AS revenue FROM reports GROUP BY reports.date, reports.book_title 我需要把它翻译成ruby代码 我有活动记录模型 class Report <

我的sql视图中有以下代码:

SELECT
    reports.`date`
    reports.book_title
    SUM( reports.net_sold_count * reports.avg_list_price / 10 ) AS revenue
FROM
    reports
GROUP BY
    reports.date,
    reports.book_title
我需要把它翻译成ruby代码

我有活动记录模型

class Report  < ActiveRecord::Base
但我不知道下一步该怎么办,因为在所有示例中,
.sum
只接受一个参数。()

UPD: 现在,我正在考虑尝试类似的东西

Report.select('date, book_title, SUM( reports.net_sold_count * reports.avg_list_price / 10 ) AS revenue').group(:date, :book_title)
#sum
文档具有误导性。是的,
#sum
只接受一个参数,但该参数不必是与列名对应的符号,该参数也可以是使用可用列的SQL表达式。特别是,
#sum
的参数可以是Ruby字符串:

'reports.net_sold_count * reports.avg_list_price / 10'
所以你可以说:

Report.group(:date, :book_title).sum('reports.net_sold_count * reports.avg_list_price / 10')
这将给您一个如下所示的哈希:

{
  [some_date, some_title] => some_sum,
  ...
}

你可以在Ruby land中根据需要进行分离。

如果我需要像对象数组这样的结果怎么办?
[{:date=>some_-date,title:=>some_-title,:sum=>some_-sum},…]
(类似于执行sql代码的结果,我建议过)那么你可以用一点点Ruby“根据需要进行分离”,可能使用类似于
map{(a,b),c{:a=>a,:b=>b,:c=>c}}
的东西。也许阿雷尔能帮上忙
{
  [some_date, some_title] => some_sum,
  ...
}