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 相关文章推荐
SQL Server数据定义——模式与基本表操作
Apr 05 SQL Server
SQLServer 日期函数大全(小结)
Apr 08 SQL Server
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
SQLServer2008提示评估期已过解决方案
Apr 12 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
在 SQL 语句中处理 NULL 值的方法
Jun 07 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
Jun 30 SQL Server
数据库之SQL技巧整理案例
Jul 07 SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 SQL Server
SQL Server删除表中的重复数据
May 25 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 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_MySQL教程-第一天
2007/03/18 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
python3处理含有中文的url方法
2018/05/10 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
社区端午节活动方案
2014/01/28 职场文书
企业军训感想
2014/02/07 职场文书
建筑安全责任书范本
2014/07/24 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
企业整改报告范文
2014/11/08 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python
MySQL GTID复制的具体使用
2022/05/20 MySQL
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS