sql时间段切分实现每隔x分钟出一份高速门架车流量


Posted in SQL Server onFebruary 28, 2022

业务场景:

我们需要查询从表T里查询某一天按照5分钟为一段间隔通过高速门架的车流量。部分脱敏数据如下

sql时间段切分实现每隔x分钟出一份高速门架车流量

表T里包含time,id,chepai,部分数据为(’2020-02-23 00:43:27','某高速门架0010','浙XXXXXX')

按照正常情况下我们的限定where条件是time >= '2020-02-23 0:00' and time < '2020-02-23 0:00'  或者 between等,但是这样来写一两个还行,要每隔5分钟切分一次,需要写二百多,过于麻烦

解决思路:

  • 需要把时间进行下降到其5分钟开始的最初时间处理,即00:12:30是在00:10:00-00:15:00之间,要转换为00:10:00,同样10:21:39在10:20:00-10:25:00,所以转换为10:20:00,这样一来五分钟内的数据都下降统一成5分初的时间,也就是5分钟这一段的数据就有了。当然也可以把数据进行上升处理,只不过23:55:00-23:59:59这个时间段就上升到第二天的00:00了
  • 对时间段进行下降处理思想有了,问题是如何实现:可以把时间字段转换为数字整形,即每一个时间都对应着一串数字,只要把这个数字由年月日时分秒切割相加再除以5,然后向下取整再乘以5,最后再转换为时间,这样就能达到下降了,这里的核心思想就是无法整除5的那部分余数就是5分钟这个时间段的,现在我们向下取整,比如2.75向下取整是2,那么就能把时间下降了。同样的如果是每隔10分钟,那就是除以10,每隔1小时的,直接substr切分时间字段就可以了
  • 这里使用强大的两个函数FROM_UNIXTIME和UNIX_TIMESTAMP来完成
SELECT t.time,
        t.id,
        COUNT(DISTINCT(t.chepai)) num
FROM 
    (SELECT time,
        id,
		-- FROM_UNIXTIME把整型数字转为时间类型
        FROM_UNIXTIME(
			-- 一般年月日无需动,直接unix_timestamp先转为整型再加上时分秒即可
			unix_timestamp(left(time,10))
			-- 分*60+秒然后除以5,floor向下取整后再*5*60,具体思路见上
			+5*60*floor((substr(PicTime,12,2)*60+substr(Pictime,15,2))/5)
			) time,
        chepai
    FROM T
    WHERE left(time,10) = '2020-02-23'
    ORDER BY  time asc)t
GROUP BY  t.time,t.id
ORDER BY  t.time,t.id

到此这篇关于sql时间段切分实现每隔x分钟出一份高速门架车流量的文章就介绍到这了,更多相关sql时间段切分内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

SQL Server 相关文章推荐
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQLServer 日期函数大全(小结)
Apr 08 SQL Server
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
Sql Server之数据类型详解
Feb 28 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
SQL Server的存储过程与触发器以及系统函数和自定义函数
Apr 10 SQL Server
MSSQL基本语法操作
Apr 11 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
SQL Server中锁的用法
May 20 SQL Server
在SQL Server中使用 Try Catch 处理异常的示例详解
Jul 15 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 #SQL Server
Sql Server之数据类型详解
Feb 28 #SQL Server
sql server 累计求和实现代码
Feb 28 #SQL Server
SQL SERVER触发器详解
Feb 24 #SQL Server
SQL SERVER存储过程用法详解
Feb 24 #SQL Server
SQL SERVER实现连接与合并查询
Feb 24 #SQL Server
SQLServer中exists和except用法介绍
You might like
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
Python实现分割文件及合并文件的方法
2015/07/10 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Python如何输出警告信息
2020/07/30 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
同学会主持词
2014/03/18 职场文书
体操比赛口号
2014/06/10 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL