grouping recs by user, then averaging...

I'm wondering if there's a way in RoR other than going to raw SQL to take a table of scores, group and sum them by each user, then average those values?

So far, I've got: @gpointsallcum = Gamepoint.average(:pointvalue)|| 0     @gpointsalllastweek = Gamepoint.average(:pointvalue, :conditions => ["created_at >= ? and created_at <= ?", datelastweek,datethisweek])|| 0     @gpointsallthisweek = Gamepoint.average(:pointvalue, :conditions => ["created_at >= ?", datethisweek]) || 0

But this is just averaging across all scores...

Any help appreciated!

I'm wondering if there's a way in RoR other than going to raw SQL to take a table of scores, group and sum them by each user, then average those values?

So far, I've got: @gpointsallcum = Gamepoint.average(:pointvalue)|| 0    @gpointsalllastweek = Gamepoint.average(:pointvalue, :conditions => ["created_at >= ? and created_at <= ?", datelastweek,datethisweek])|| 0    @gpointsallthisweek = Gamepoint.average(:pointvalue, :conditions => ["created_at >= ?", datethisweek]) || 0

sum, average etc... take a :group option if that's what you're asking.

Fred

I think you can use named_scope for last_week and this_week, and has_many relationships between user and the gamepoint, so that will give you user.gamepoints.last_week and user.gamepoints.this_week.

Then you can use collect to get the point values and do the sum and average.