Sql rails按多列分组

Sql rails按多列分组,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我有一个带有空类型id和日历id的预算表-实际头,估计头 当我做Budgets.sum(:reactual\u head,:group=>“emptype\u id,calendar\u id”)时,我不会得到按上述两列分组的结果,而只是按emptype\u id 但是,当我检查日志时,sql查询是正确的 SELECT sum(`budgets`.actual_head) AS sum_actual_head, emptype_id,calendar_id AS emptype_id_calen

我有一个带有空类型id和日历id的预算表-实际头,估计头

当我做
Budgets.sum(:reactual\u head,:group=>“emptype\u id,calendar\u id”)
时,我不会得到按上述两列分组的结果,而只是按
emptype\u id

但是,当我检查日志时,sql查询是正确的

SELECT sum(`budgets`.actual_head) AS sum_actual_head, emptype_id,calendar_id AS emptype_id_calendar_id FROM `budgets` GROUP BY emptype_id,calendar_id
有103行

我想迭代每个emptype_id和calendar_id,以获得实际的头的总和
然后对它进行一些计算。

我不确定这一点,购买try
:group=>[:emptype\u id,:calendar\u id]
rails不支持使用多列进行分组。您必须使用常规的“全部查找”:

budgets = Budgets.find(:all, 
                       :select => "emptype_id, calendar_id, sum(budgets.actual_head) AS sum_actual_head", 
                       :group => "emptype_id, calendar_id")

budgets.each { |budget| puts budget.sum_actual_head }

我作弊。Do
:组=>[“清空日历id,日历id”]。


我不想要你也不想要,但这至少是有效的。

嗨,这不起作用,抛出下面的错误;hmm无法按两列进行分组“ActiveRecord::StatementInvalid:Mysql::Error:“字段列表”中的未知列“emptype\u idcalendar\u id”:选择sum(
budget s
.actual\u head)作为sum\u actual\u head,emptype\u idcalendar\u id作为emptype\u idcalendar\u id FROM
budgets
group by emptype\u idca lendar\u id”这适用于Rails 3.0.x:
Evaluation.average(:score,:group=>[:person\u id,:category])
。它将通过一个错误。如果我们运行此代码,活动记录将把这些列名解析为单个单词,如emptype\u idcalendar\u idFor rails的更新版本(>=3.2)使用
Budgets。选择(“emptype\u id,calendar\u id,sum(Budgets.actual\u head)as sum\u actual\u head”)。组(“emptype\u id,calendar\u id”)
,因为find仅适用于id。