`
raymond.chen
  • 浏览: 1426042 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle lead分析函数

 
阅读更多

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的分析函数是其强大的特性之一,它允许用户在单个SQL查询中执行复杂的分析操作,而无需使用子查询或者自连接。这篇文档将深入探讨Oracle中的分析函数,帮助你更好地理解和利用这一功能。 一、什么是...

    oracle 9i 分析函数参考手册.rar

    Oracle 9i 分析函数是数据库查询中一种强大的工具,它们允许在单个查询中对一组行进行聚合操作,同时保留原始行的细节。在Oracle数据库系统中,分析函数为数据分析师和数据库管理员提供了深入洞察数据的能力,尤其在...

    oracle的分析函数汇总

    Oracle 分析函数汇总 Oracle 分析函数是 Oracle 8.16 中引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式。下面我们将对 Oracle 分析函数进行详细的介绍和分析。 自动汇总函数 自动汇总函数...

    Oracle分析函数

    Oracle 分析函数详解 Oracle 分析函数是 Oracle 数据库中的一种强大功能,能够帮助用户快速进行数据分析和处理。在本文中,我们将对 Oracle 分析函数进行详细的介绍,并对其各个函数进行解释。 一、总体介绍 ...

    ORACLE 分析函数大全

    Oracle 分析函数是一种强大的SQL工具,它允许你在处理数据时执行复杂的分析操作,而不像聚合函数那样仅仅返回单行结果。分析函数在Oracle 8.1.6版本中被引入,自那时起,它们已经成为数据库查询和报表生成的重要组成...

    Oracle 分析函数.doc

    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分析函数.pdf

    Oracle分析函数是数据库管理系统Oracle中的一种高级SQL特性,它允许用户在单个查询中对一组行进行计算,而无需使用子查询或自连接。这些函数极大地增强了数据分析和报告的能力,提高了查询性能。以下是对Oracle分析...

    Oracle分析函数.doc

    Oracle分析函数是数据库管理系统Oracle中的一种高级特性,用于处理和分析数据集,提供了一种高效的方式来执行聚合操作,而无需多次查询数据库。分析函数能够直接在单次查询中完成复杂的数据计算,包括排序、分组、...

    oracle分析函数.doc

    Oracle分析函数是数据库管理系统Oracle中一组强大的工具,用于处理集合数据,特别是在复杂的报表和数据分析场景中。它们允许用户在单个SQL查询中执行聚合操作,同时保持行的原始顺序,这是传统的GROUP BY函数无法...

    Oracle分析函数教程

    分析函数还有其他多种类型,如COUNT、MAX、MIN、SUM、LEAD、LAG、RANK、DENSE_RANK等,它们都允许在数据窗口内进行更复杂的计算。通过灵活运用这些函数,可以实现更精细的数据分析和报告,例如计算移动平均、差异、...

    Oracle之分析函数 常用的分析函数

    排序顺序影响了分析函数的结果,因为某些函数(如LEAD, LAG, RANK等)依赖于行的相对位置。 3. **窗口(ROWS)**:窗口定义了分析函数作用的行范围。它可以指定为无界(UNBOUNDED PRECEDING/FOLLOWING)来涵盖所有...

    oracle数据仓库分析函数汇总

    Oracle数据仓库分析函数是数据库查询和分析中的重要工具,尤其对于商业智能(BI)和数据仓库项目来说,它们能够提供深度的数据洞察。本资源“oracle数据仓库分析函数汇总”聚焦于Oracle数据库中的分析函数,尤其是与...

    oracle分析函数

    Oracle分析函数是数据库管理系统Oracle中的一种高级SQL特性,自8.1.6版本引入,极大地扩展了SQL在数据处理和分析上的能力。分析函数的主要作用是进行聚合操作,但与传统的聚合函数(如SUM, COUNT, AVG等)不同,它们...

    深入浅出Oracle分析函数

    Oracle中的分析函数主要包括RANK()、DENSE_RANK()、ROW_NUMBER()用于排名,LEAD()和LAG()用于获取当前行前后行的值,FIRST_VALUE()和LAST_VALUE()用于获取分区的第一行和最后一行的值,以及SUM()、AVG()、MIN()、MAX...

    ORACLE分析函数详解

    Oracle分析函数是数据库管理系统Oracle中的一种高级特性,自Oracle 8.1.6版本开始引入,主要用于处理复杂的聚合计算和数据分析任务。它们提供了一种更高效、更灵活的方式来执行诸如累计计算、分组内的百分比计算、前...

    Oracle 9i 分析函数参考手册

    Oracle 9i 分析函数是数据库管理中一种强大的工具,自 Oracle 8.1.6 版本开始引入。分析函数的主要目的是计算基于特定分组的聚合值,但与普通的聚合函数(如 SUM, AVG, COUNT 等)不同,它们能够针对每个分组返回...

    Oracle分析函数手册

    Oracle分析函数是数据库管理系统Oracle中的一个强大特性,自8.1.6版本开始引入,用于对数据集执行更复杂的聚合操作。与普通的聚合函数(如SUM、COUNT、AVG等)不同,分析函数允许在结果集中返回多行,而不是单行的汇...

    Oracle之分析函数讲解及PPT资源.zip

    Oracle数据库中的分析函数是SQL查询中的重要工具,用于在数据集上执行聚合操作,并且能够对每个分组或行提供上下文相关的计算。这些函数在处理复杂的数据统计和报表展示时非常有用,能够帮助我们高效地获取所需信息...

    【转】Oracle分析函数简述

    Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,它们在SQL查询中用于处理集合数据,提供了对一组行进行计算的能力,而不仅仅局限于单行或单列。这些函数使得数据库管理员和开发人员能够进行复杂的统计...

Global site tag (gtag.js) - Google Analytics