当前位置: 首页 > news >正文

sql 比较两个时间_73找到业务高峰时段的sql示例(报表开发类)

有人在技术讨论群里提出下面一个业务逻辑代码段:

c0524682d675ddda32406b93d7a5cda4.png

这段代码的业务逻辑是找到2019年业务量最多的61秒(我想本意应该是60秒,代码不够严谨)间隔及业务量。

这个业务题主用plsql完成,是比较典型的程序员思维,执行效率明显是非常低的,我给出的建议是可以直接按to_char(date_created,'yyyymmdd hh24mi')做group by,再找出最大值,sql写法比较简单,相信大部分开发人员应该都能够简单写出。 

但是题主又补充了其他需求,说还可能需要按不同的时间间隔做统计,比如15秒间隔,30秒间隔等。

针对这种需求,我给出的SQL写法如下(以15秒间隔为例):

69622543b03a4b45eafaf8975a1fed2c.png

题主对两种写法做了性能对比,1000多万记录,我提供的写法耗时125秒,原plsql写法耗时1371秒(这个速度是无法接受的),效率相差10几倍,如果数据量再大,效率差别也会更大,而且优化后的sql还可以使用并行,还能提速。

    上面的查询,间隔的起点是固定的,这种写法还不是太复杂。如果我们再把这个问题延伸一下,比如查一年内哪个连续10天的业务量最高,sql相对就复杂一些,下面是我给出的写法:

4d3a5e0a8317fb819893f65cbdc3bd5c.png

上面是一些使用分析函数的两个小案例,大家可以参考一下。同时,使用with的CTE写法会让sql的层次比较清晰,增强代码的可读性。

如果你有更好的写法,不妨在留言写出来,让大家一起学习一下。

相关文章:

  • 与全局变量构造析构顺序有关的一道面试题(C++)
  • sql 让每行显示两次_SQL基础-复杂查询
  • 关于Symbian的程序已经关闭错误
  • led灯条维修_格栅屏和普通屏的区别?LED格栅屏是如何防水的
  • 时间条控件制作简明教程
  • python asyncio socket_用python asyncio写一个MMO(2)
  • 深入理解Symbian控件架构
  • Symbian程序图标问题
  • 无符号数相减_关于超自然数的构造——非标准分析
  • ListBox控件
  • 分析称2007年IT巨头将争夺三大领域
  • python canny优化_python实现canny边缘检测
  • add多个文件 git 文件夹_穿越时空的git之创建版本库和常用命令操作
  • 终究需要什么呢?
  • python批量上传 服务器_批量从本地上传文件到指定服务器或从指定服务器下载文件...
  • ----------
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • axios 和 cookie 的那些事
  • codis proxy处理流程
  • Cookie 在前端中的实践
  • Druid 在有赞的实践
  • Java知识点总结(JavaIO-打印流)
  • rabbitmq延迟消息示例
  • Web Storage相关
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 配置 PM2 实现代码自动发布
  • 普通函数和构造函数的区别
  • 如何使用 JavaScript 解析 URL
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 算法---两个栈实现一个队列
  • 微信小程序--------语音识别(前端自己也能玩)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​人工智能书单(数学基础篇)
  • ![CDATA[ ]] 是什么东东
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #pragma once与条件编译
  • $NOIp2018$劝退记
  • %@ page import=%的用法
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET分布式缓存Memcached从入门到实战
  • .net中应用SQL缓存(实例使用)
  • ::
  • @ResponseBody
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • []error LNK2001: unresolved external symbol _m