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 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
Jul 07 SQL Server
数据库之SQL技巧整理案例
Jul 07 SQL Server
Spark SQL 2.4.8 操作 Dataframe的两种方式
Oct 16 SQL Server
SQL中的三种去重方法小结
Nov 01 SQL Server
SQL SERVER触发器详解
Feb 24 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
SQL Server内存机制浅探
Apr 06 SQL Server
SQL Server 忘记密码以及重新添加新账号
Apr 26 SQL Server
SQL Server中的游标介绍
May 20 SQL Server
SQL Server使用PIVOT与unPIVOT实现行列转换
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 常用字符串函数总结
2008/03/15 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
pycharm重命名文件的方法步骤
2019/07/29 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
python异常处理try except过程解析
2020/02/03 Python
使用django自带的user做外键的方法
2020/11/30 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
车间主管岗位职责
2013/11/14 职场文书
旅游项目开发策划书
2014/01/18 职场文书
2014政务公开实施方案
2014/02/19 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
教师求职信范文
2014/05/24 职场文书
临床医学专业求职信
2014/08/08 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python
Nginx配置根据url参数重定向
2022/04/11 Servers