ORCLE 查询一段时间(时间点不定,时差确定)内符合一定条件的数据

来源:互联网 发布:怎么网络推广 编辑:程序博客网 时间:2024/04/30 13:10

应用场景:

例如:银行需要监控柜员们操作,在一天中,如果同一柜员半小时内办理业务的数量超过了五条,则视为涉嫌违规操作,咋看貌似很简单,但细细一分析,好像也不是那么容易,因为只知道时间差为半小时,没有一个具体基准时间作标准.........废话不多说,直接上我的分析和SQL语句。

1:按添加数据时的时间排序(正序)增加一列自增序列
2:根据序列自关联查询任意两条数据插入间隔差为5的数据,组成一个新表
3:根据生成的这个新表,查询出时间间隔差大于30分钟的数据
4:查时间间隔差大于30分钟的数据的总数
5:现在就可以根据总数是否大于0判断柜员是否有违规操作了,OK,大功告成!想得比较简单,不知道对大量数据场景下查询效率如何


最终语句:

select count(xulie1)  from (
select c1.xulie xulie1,c1.ctime ctime1,c2.xulie xulie2,c2.ctime ctime2 from 
(select Row_Number() over ( order by ctime ) as xulie , t.ctime from ceshi t) c1 left join 
(select Row_Number() over ( order by ctime ) as xulie , t.ctime from ceshi t) c2 on 
c1.xulie +
 4 = c2.xulie) t2

 where t2.ctime2 - ctime1 > 30/(24*60)

(附:本人小白,刚入行,正尝试写博客,如内容有错误、不规范或需要优化的地方,或有其他解决方法,希望各路大神们指点指点,谢谢!!!)

具体步骤如下:

1:测试所用原始表数据

2:按时间排序(正序)增加序列


3:根据序列自关联查询任意两条数据插入间隔差为5的数据,组成一个新表



4:根据生成的这个新表,查询出时间间隔差大于30分钟的数据

5:查时间间隔差大于30分钟的数据的总数



阅读全文
0 0
原创粉丝点击