一、mysql按日统计
select DATE_FORMAT(start_time,'%Y%m%d') days,count(1) count from callRecord where direction='0' and start_time > '2017-06-28' group by days;
二、mysql按周统计
select DATE_FORMAT(start_time,'%Y%u') weeks,count(1) from callRecord where direction='0' group by weeks;
三、mysql按月统计
select DATE_FORMAT(start_time,'%Y%m') months,count(1) from callRecord where direction='0' group by months;
四、方便的场景
这对于数据量不大的表非常有效。
如:按月统计某员工的迟到情况啦等等。
五、大量的数据
例如每天产生20W数据,执行这个按天统计一年是很夸张的事情。
我能想到的办法就是:
【分时统计】
1. 历史数据是不变的
2. 指定时段指定条件的统计结果是相同的
3. 先用定时任务在相对空闲的时段按照一定的细粒度执行后台统计,然后将结果放到单独的统计表里
4. 然后业务根据需要再去统计表中做查询
5. 有没有更好的办法分享一下?