scenario : select distinct years from members and their respective record count of that particular year.
eg: [{year = 2008 , count = 45123},{year = 2007 , count = 12332} ]
previously , i was using "select distinct tochar(datetime)" , it ended up taking quite a while to fetch the records so i switched to this code.
relationship group 1 : N members
rootgroup is a pretched group
member = root_group.members.find(:all, :select => "max(datetime) as maxdate,min(datetime) as mindate" )[0]
return member.mindate.year.upto(member.maxdate.year).inject({}) do
year>
#return hash with year and member count for that year
compare_date = Date.new(year,1,1)
{year , root_group.members.find( :conditions => [ "datetime >= ? AND datetime < ?", compare_date, compare_date + 1.year ], :select => 'count(*)')} end
any ideas on how to tweak it ?
it really looks quite clumsy at the moment and iam repeating the code for drilling into the months and days , it really feels like bad practice.
thanks