表结构
字段 |
数据类型 |
id |
int(11) |
created_at |
datetime |
期望结果
时间段 |
数量 |
2019-09-29 12:00:00 ~ 2019-09-29 12:05:00 |
100 |
2019-09-29 12:05:00 ~ 2019-09-29 12:10:00 |
120 |
2019-09-29 12:10:00 ~ 2019-09-29 12:15:00 |
131 |
2019-09-29 12:15:00 ~ 2019-09-29 12:20:00 |
189 |
2019-09-29 12:20:00 ~ 2019-09-29 12:25:00 |
134 |
2019-09-29 12:25:00 ~ 2019-09-29 12:30:00 |
155 |
2019-09-29 12:30:00 ~ 2019-09-29 12:35:00 |
198 |
2019-09-29 12:35:00 ~ 2019-09-29 12:40:00 |
133 |
SQL语句
1 2 3 4 5 6
| -- 300 为 5 分钟 select concat(from_unixtime(unix_timestamp(created_at) - unix_timestamp(created_at) % 300), ' ~ ', from_unixtime(unix_timestamp(created_at) - unix_timestamp(created_at) % 300 + 300)) as per, count(1) from table group by per;
|
如果 created_at 类型为 int,还可以减少一次转换
1 2 3 4 5 6
| -- 300 为 5 分钟 select concat(from_unixtime(created_at - created_at % 300), ' ~ ', from_unixtime(created_at - created_at % 300 + 300)) as per, count(1) from table group by per;
|
思路
时间分片 MySQL没有相关的时间分片函数,还好可以用取模(%)实现