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 相关文章推荐
2021-4-3课程——SQL Server查询【2】
Apr 05 SQL Server
Sql-Server数据库单表查询 4.3实验课
Apr 05 SQL Server
SQL Server连接查询的实用教程
Apr 07 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
SQLServer中exists和except用法介绍
Dec 04 SQL Server
SQL SERVER实现连接与合并查询
Feb 24 SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 SQL Server
详解在SQLPlus中实现上下键翻查历史命令的功能
Mar 18 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
一次SQL查询优化原理分析(900W+数据从17s到300ms)
Jun 10 SQL Server
SqlServer常用函数及时间处理小结
May 08 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学习之简单计算器实现代码
2011/06/09 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
神经网络python源码分享
2017/12/15 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
校长就职演讲稿
2014/01/06 职场文书
总经理岗位职责范本
2014/02/02 职场文书
党员检讨书范文
2014/12/27 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2015年维修工作总结
2015/04/25 职场文书
道士塔读书笔记
2015/06/30 职场文书