我的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
现在我有了这段代码:
Report.group(:date, :book_title)
但我不知道接下来要去哪里,因为所有示例中的.sum
只接受一个参数。(http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-sum)
UPD: 现在,我正在考虑尝试像
这样的东西Report.select('date, book_title, SUM( reports.net_sold_count * reports.avg_list_price / 10 ) AS revenue').group(:date, :book_title)
答案 0 :(得分:1)
#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领域。