2011-03-06 57 views
0

我的数据是这样的多列分组,并在轨道共计

___________________________________ 
|name date  status location | 
|Tom 1/1/2010 Ready  Home  | 
|Tom 1/1/2010 Ready  Home  | 
|Bill 1/18/2010 Go  Work  | 
|Bob 2/19/2010 Ready  Field | 
|Bob 2/19/2010 Ready  Field | 
|Wil 4/5/2010 Steady Work  | 
|Wil 4/5/2010 Steady Work  | 
|Wil 4/5/2010 Steady Work  | 
|Wil 4/5/2010 Steady Home  | 
|Bill 7/14/2010 Stop  Home  | 
|___________________________________| 

我需要组/指望它使看起来像这样

Name Date  Location Status Count 
Tom 1/1/2010 Home  Ready 2 
Bill 1/18/2010 Work  Go  1 
Bill 7/14/2010 Home  Stop  1 
Bob 2/19/2010 Field  Ready 2 
etc..... 

回答

2

有时候要做到这一点是棘手的最佳方式根据您的数据的格式和属性。但总体而言,您可以使用ActiveRecord#find的参数:group

Model.all(:select => 'COUNT(*) AS count, name, date, location, status', :group => 'name') 

或者,如果使用Rails 3

Model.all.select('COUNT(*) AS count, name, date, location, status').group('name') 

如果你总是打算组在此基础上关系的数据,考虑将其添加为默认范围模型。

class Model < ActiveRecord::Base 
    default_scope select('COUNT(*) AS count, name, date, location, status') 
    default_scope group('name') 
end