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
SQLServer2008提示评估期已过解决方案
Apr 12 SQL Server
MySQL 中如何归档数据的实现方法
Mar 16 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
sql server偶发出现死锁的解决方法
Apr 10 SQL Server
SQL Server Agent 服务无法启动
Apr 20 SQL Server
Sql Server 行数据的某列值想作为字段列显示的方法
Apr 20 SQL Server
SQL Server中搜索特定的对象
May 25 SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
May 25 SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 SQL Server
SQL Server携程核心系统无感迁移到MySQL实战
Jun 01 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
合作指挥官:孟斯克
2020/03/16 星际争霸
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php测试kafka项目示例
2020/02/06 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JS实现div居中示例
2014/04/17 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
电子信息毕业生自荐信
2013/11/16 职场文书
软件工程师岗位职责
2013/11/16 职场文书
门前三包责任书
2014/04/15 职场文书
责任书格式范文
2014/07/28 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
个人年终总结范文
2015/03/09 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
党小组推荐意见
2015/06/02 职场文书
公开致歉信
2019/06/24 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
详解Java实践之建造者模式
2021/06/18 Java/Android
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
Java使用HttpClient实现文件下载
2022/08/14 Java/Android