I have a table (tbl_people), in this table I have a datetime field I want to group and count the records in groups of 10 years... The result should be something like:
First calculate the decade for each row
select floor(year(`year`) / 10) * 10 as decade
from tbl_people
and then use this intermediate result for counting SQL Fiddle
select count(*), decade, decade + 9
from (select floor(year(`year`) / 10) * 10 as decade
from tbl_people) t
group by decade
or this SQL Fiddle, if you want the decade in one column
select count(*) as count, concat(decade, '-', decade + 9) as year
from (select floor(year(`year`) / 10) * 10 as decade
from tbl_people) t
group by decade