我有一个表 (tbl_people),在这个表中我有一个日期时间字段,我想对 10 年的记录进行分组和计数......结果应该是这样的:
|计数 |年 |
| 1000 | 1980-1989 |
| 250 | 1990-1999 |
我可以编写多个查询来执行此操作,但这意味着我必须为每个范围编写不同的查询。有没有一种方法可以从最小年份向上(10 年间隔)动态递增并计算间隔内的记录数?
最佳答案
首先计算每一行的十年
select floor(year(`year`) / 10) * 10 as decade
from tbl_people
然后使用这个中间结果来计算SQL Fiddle
select count(*), decade, decade + 9
from (select floor(year(`year`) / 10) * 10 as decade
from tbl_people) t
group by decade
或者这个SQL Fiddle , 如果你想在一栏中显示十年
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
关于mysql - 按年份区间对行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779777/