Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。
以下是Lead的范例:
找出上下两条记录中,borrow_nid,user_id,account,addip相同、且addtime之差少于5秒的记录
for r1 in ( select id,borrow_nid,user_id,account,addip,addtime from 表名1 a4 where exists ( select 1 from ( select a2.id,a2.borrow_nid,a2.user_id,a2.account,a2.addip,a2.addtime,id2,(a2.addtime2-a2.addtime) as addtime2 from ( select a1.id,a1.borrow_nid,a1.user_id,a1.account,a1.addip,a1.addtime, lead(a1.id,1,0) over(order by rownum) as id2, lead(a1.borrow_nid,1,0) over(order by rownum) as borrow_nid2, lead(a1.user_id,1,0) over(order by rownum) as user_id2, lead(a1.account,1,0) over(order by rownum) as account2, lead(a1.addip,1,0) over(order by rownum) as addip2, lead(a1.addtime,1,0) over(order by rownum) as addtime2 from ( -- data start select t1.id,t1.borrow_nid,t1.user_id,t1.account,t1.addip,t1.addtime from 表名1 t1 where exists ( select 1 from ( select borrow_nid,user_id,account,addip,count(id) as count from 表名1 where addtime>=stime and addtime<etime group by borrow_nid,user_id,account,addip having count(id)>1 ) t2 where t2.borrow_nid=t1.borrow_nid and t2.user_id=t1.user_id and t2.account=t1.account ) and addtime>=stime and addtime<etime order by t1.borrow_nid,t1.user_id,t1.account,t1.addip,t1.addtime -- data end ) a1 ) a2 where borrow_nid=borrow_nid2 and user_id=user_id2 and account=account2 and addip=addip2 and (addtime2-addtime)<5000 ) a3 where a4.id=a3.id or a4.id=a3.id2 ) order by a4.borrow_nid,a4.user_id,a4.account,a4.addip,a4.addtime ) loop v_data_id := r1.id; v_borrow_nid := r1.borrow_nid; v_user_id := r1.user_id; v_account := r1.account; v_addip := r1.addip; v_addtime := r1.addtime; insert into 表名2(id,data_type,data_id,borrow_nid,user_id,account,addip,addtime) values (seq_repeat_datas_alarm.nextval, 'tender', v_data_id, v_borrow_nid, v_user_id, v_account, v_addip, v_addtime); end loop;
相关推荐
ORACLE常用分析函数说明,oracle优化
文档详细介绍了oracle的分析函数,包括功能说明、sql示例等。分析函数功能强大,在报表或数据迁移的时候可能会使用到。分析函数用法看上去有点复杂,最好使用的时候,参考文档
oracle的分析函数汇总oracle的分析函数汇总
主要包括分析函数(OVER);分析函数2(Rank, Dense_rank, row_number);分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;26个分析函数;PLSQL开发笔记和小结;分析函数简述 ROW_NUMBER () ...
NULL 博文链接:https://yangkai.iteye.com/blog/754447
oracle 9i 分析函数参考手册.doc. 希望大家作为参考方便使用
ORACLE 分析函数大全,包含很多关于ORACLE的分析函数,内置函数
ORACLE分析函数大全 包括大部分常用的分析函数
关于ORACLE分析函数的教程,教程描述描述清晰
oracle的分析函数over 及开窗函数
分析函数是 Oracle 专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计。本文总结了若干分析函数的使用方式,供大家学习参考,有...
Oracle自定义聚合函数,分析函数.
Oracle 分析函数详解 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number 3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数
Oracle分析函数,常用分析函数应有尽有
Oracle 9i 分析函数参考手册 Oracle 9i 分析函数参考手册 Oracle 9i 分析函数参考手册
Oracle_分析函数.pdf 简单的一个小文件 ,较短, 要是需要,可能会对你有帮助。
Oracle分析函数使用总结Oracle分析函数使用总结Oracle分析函数使用总结Oracle分析函数使用总结
Oracle之分析函数
ORACLE分析函数.pdf