Help with Code Tweaking

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

Why not use something like this:

=# select count(*), date_part('minute', created_at) as min from toys
group by min;   count | min