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基本使用和简单的CRUD操作
Apr 05 SQL Server
SQL Server连接查询的实用教程
Apr 07 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
如何有效防止sql注入的方法
May 25 SQL Server
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
Jun 30 SQL Server
SQLServer中exists和except用法介绍
Dec 04 SQL Server
SQL Server实现分页方法介绍
Mar 16 SQL Server
sqlserver连接错误之SQL评估期已过的问题解决
Mar 23 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 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中设置时区,记录日志文件的实现代码
2013/01/07 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
javascript一点特殊用法
2008/05/28 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python pytest进阶之fixture详解
2019/06/27 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Python编写打字训练小程序
2019/09/26 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
热能动力工程毕业生自荐信
2013/11/07 职场文书
个人教师自我评价范文
2013/12/02 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
国庆庆典邀请函
2015/02/02 职场文书
地道战观后感
2015/06/04 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python