Reputation: 276
i have budgets table with emptype_id and calendar_id actual_head, estimated_head
when i do Budgets.sum(:actual_head ,:group=>"emptype_id,calendar_id")
i do not get the result grouped by the above two columns but only by the emptype_id
however when i check the log the sql query is right
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
has 103 rows
I wanted to iterate through each emptype_id and calendar_id to get a sum of actual_head and do some calculations on it.
Upvotes: 13
Views: 38377
Reputation: 61
I cheat. Do :group => ["emptype_id,calendar_id"].
Not want you nor I want, but this works at least.
Upvotes: 6
Reputation: 521
Grouping with multiple columns cannot be supported by rails. You have to use a regular find all:
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 }
Upvotes: 10
Reputation: 12157
I'm not sure of this, buy try :group => [:emptype_id, :calendar_id]
Upvotes: 3