2011-03-06 59 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