【发布时间】:2014-05-11 15:51:47
【问题描述】:
假设我有一个包含整数列 no_of_units 和 average_revenue_per_unit 的表。要获得任何一行的总收入,我只需要计算 no_of_units * average_revenue_per_unit - 很简单。但是如果我想计算整个表格的总收入怎么办?
显而易见的方法是:
total_no_of_units = TableName.sum(:units)
overall_average_revenue = TableName.average(:revenue_per_unit)
total_revenue = total_no_of_units * overall_average_revenue
但是不得不使用两个单独的 SQL 查询让人感觉很恶心。有没有办法只用一个链接的 ActiveRecord 查询来做到这一点?或者我可以(并且应该)使用原始 SQL 来实现吗?
编辑:我刚刚意识到我上面的示例代码是错误的! overall_average_revenue 是 revenue_per_unit 列中所有整数的平均值...但这与每单位的实际平均收入不同,因为不同的行有不同的单位数。我需要一个加权平均值。回到绘图板...
【问题讨论】:
标签: sql ruby-on-rails database aggregate-functions rails-activerecord