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 相关文章推荐
SqlServer: 如何更改表的文件组?(进而改变存储位置)
Apr 05 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
Jun 30 SQL Server
利用 SQL Server 过滤索引提高查询语句的性能分析
Jul 15 SQL Server
SQL语句中JOIN的用法场景分析
Jul 25 SQL Server
sql server删除前1000行数据的方法实例
Aug 30 SQL Server
SQL Server2019数据库备份与还原脚本,数据库可批量备份
Nov 20 SQL Server
SQL Server实现分页方法介绍
Mar 16 SQL Server
sqlserver连接错误之SQL评估期已过的问题解决
Mar 23 SQL Server
SQL Server使用T-SQL语句批处理
May 20 SQL Server
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
May 25 SQL Server
SQL Server删除表中的重复数据
May 25 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
用PHP4访问Oracle815
2006/10/09 PHP
PHP PDO函数库详解
2010/04/27 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
PHP中的替代语法介绍
2015/01/09 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
JS中的多态实例详解
2017/10/15 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
微信小程序如何获取地址
2019/12/24 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
python中Flask框架简单入门实例
2015/03/21 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
运行时异常与一般异常有何异同?
2014/01/05 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
闪闪红星观后感
2015/06/08 职场文书
英文投诉信格式
2015/07/03 职场文书