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
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
Jun 30 SQL Server
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
Jun 30 SQL Server
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
Sep 04 SQL Server
SQLServer中exists和except用法介绍
Dec 04 SQL Server
sql server偶发出现死锁的解决方法
Apr 10 SQL Server
MSSQL基本语法操作
Apr 11 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
SQL Server携程核心系统无感迁移到MySQL实战
Jun 01 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如何编写易读的代码
2007/07/10 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
Python入门篇之函数
2014/10/20 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python创造虚拟环境方法总结
2019/03/04 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
房屋买卖协议书
2014/04/10 职场文书
小学班主任培训方案
2014/06/04 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
护林员个人总结
2015/03/04 职场文书
辩论会主持词
2015/07/03 职场文书
2015党建工作简报
2015/07/21 职场文书
观看《信仰》心得体会
2016/01/15 职场文书