关于SQL 每3分钟一次的统计数据

由于碰到一个统计数据的问题,要求是按照时间每3分钟统计一次数量。


环境:数据表里有时间字段,时间精确到(秒)级别,但是要3分钟统计一次表中的数据量。


解决方法:

第一个方法,是分时间段统计,用case解决每个时间段都精确的写出来。

但是表中的数据已经跨年了,这种方法仅适合统计的时间跨度比较大的情况(比如统计每年的数据量)。


第二个方法,把时间处理,思路是这样的。

首先,将时间截取到分钟,然后将分钟的时间“除3”取整(同样合适按照一个小时60分钟所有能整除的数,比如5分钟、6分钟、10分钟、20分钟、30分钟等);

其次,将得到的时间处理成正常需要显示的时间,因为上边已经取整了,分钟的数据缩小了3倍,需要在分钟的基础上乘3;

最后,将数据按照时间统计。

结束。


以mysql为例:

将时间截取到分钟,并整除,再拼接,concat(date_format(datetime,'%y-%m-%d %h:'),floor(date_format(datetime,'%i')/3)*3,':00');

得到的结果是将 datetime 字段,不到3分钟的时间全部都处理成整3分钟。

即:2016-03-08 15:21:00 ~ 2016-03-08 15:23:59 之间的时间都 变成 2016-03-08 15:21:00,这样,3分钟以内的时间就变成同一个时间。

下一步统计就很简单了吧,直接以时间统计需要统计的字段就好了。


这种方法还适合很多其他时间段统计,只要是能整除该时间单位进制的都行,比如24小时进制的分2、3、4、6个小时统计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值