mysql - 按年份区间对行进行分组

标签 mysql group-by

我有一个表 (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/

相关文章:

javascript - 数据表重新排序保存到数据库

mysql - 在一个 GROUP BY 中组合多行

mysql - PostgreSQL:如何使用 GROUPING SETS、CUBE 和 ROLLUP 进行汇总

MySQL multiple Inner Join 帮助 - 1064

mysql - 复制行时默认插入日期列的 INTO 值,如何操作?

mysql - GROUP_CONCAT 未按预期工作

PHPExcel 标题行覆盖第一个条目

Python 条形图和折线图,在一张图中包含组

group-by - Elasticsearch:如何按查询以外的字段分组?

c# - GroupBy 项目不相等