mysql按日/周/月统计

时间:2020-11-26 14:29:21

一、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. 有没有更好的办法分享一下?