当前位置:网站首页>73-找到业务高峰时段的sql示例(报表开发类)
73-找到业务高峰时段的sql示例(报表开发类)
2022-06-22 19:11:00 【老虎刘】
有人在技术讨论群里提出下面一个业务逻辑代码段:
这段代码的业务逻辑是找到2019年业务量最多的61秒(我想本意应该是60秒,代码不够严谨)间隔及业务量。
这个业务题主用plsql完成,是比较典型的程序员思维,执行效率明显是非常低的,我给出的建议是可以直接按to_char(date_created,'yyyymmdd hh24mi')做group by,再找出最大值,sql写法比较简单,相信大部分开发人员应该都能够简单写出。
但是题主又补充了其他需求,说还可能需要按不同的时间间隔做统计,比如15秒间隔,30秒间隔等。
针对这种需求,我给出的SQL写法如下(以15秒间隔为例):
题主对两种写法做了性能对比,1000多万记录,我提供的写法耗时125秒,原plsql写法耗时1371秒(这个速度是无法接受的),效率相差10几倍,如果数据量再大,效率差别也会更大,而且优化后的sql还可以使用并行,还能提速。
上面的查询,间隔的起点是固定的,这种写法还不是太复杂。如果我们再把这个问题延伸一下,比如查一年内哪个连续10天的业务量最高,sql相对就复杂一些,下面是我给出的写法:
上面是一些使用分析函数的两个小案例,大家可以参考一下。同时,使用with的CTE写法会让sql的层次比较清晰,增强代码的可读性。
如果你有更好的写法,不妨在留言写出来,让大家一起学习一下。
边栏推荐
- DynamicDatabaseSource,在应用端支持数据库的主从
- 市场开始降温,对NFT 是坏事么?
- 智能计算之神经网络(Hopfield网络-DHNN,CHNN )介绍
- 【Proteus仿真】8x8Led点阵数字循环显示
- 2019 年总结:31岁,不过是另一个开始
- A Dynamic Near-Optimal Algorithm for Online Linear Programming
- Solutions to Oracle system/ user locking
- 软件上线前为什么要做性能测试?软件性能测试机构怎么找
- 阿里云视频点播播放出错,控制台访问出现code:4400
- Stochastic Adaptive Dynamics of a Simple Market as a Non-Stationary Multi-Armed Bandit Problem
猜你喜欢
随机推荐
Three months of self-taught automatic test, salary from 4.5K to 15K, who knows what I have experienced?
完全背包如何考虑排列问题
真正的缓存之王Caffine Cache
[deeply understand tcapulusdb technology] tcapulusdb table management - create a new table
How should programmers look up dates
Kotlin1.6.20新功能Context Receivers使用技巧揭秘
什么?你居然不会微信分身
Security policy and NAT (easy IP) of firewall Foundation
理财产品在双休日可以赎回吗?
Solutions to Oracle system/ user locking
天,靠八股文逆袭了啊
他98年的,我玩不过他...
[proteus simulation] 8x8LED dot matrix digital cyclic display
R语言数据预处理、把类型变量转化为因子变量,把数据集转化为h2o格式、数据集划分(训练集、测试集、验证集)
关于放大器失真的原因你了解多少呢?
Recv function with timeout
[deeply understand tcapulusdb technology] create a game zone
【Proteus仿真】NE555延时电路
Stochastic Adaptive Dynamics of a Simple Market as a Non-Stationary Multi-Armed Bandit Problem
ROS from entry to mastery (VIII) common sensors and message data





![Summer Challenge [FFH] Hongmeng machine learning journey from scratch NLP emotion analysis](/img/e8/3b6de6445c9a78f33c8e91c2ff5517.png)


