您的位置:首页 > 数据库

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

2016-03-08 15:48 218 查看
由于碰到一个统计数据的问题,要求是按照时间每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个小时统计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: