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