LAG和LEAD函数统计


     Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。

 

Lead 语法结构:

     lead(value_expr [,offset][,default]) over([query_partition_clause] order by Order_by_clause)

     参数说明:

     value_expr 值表达式,通常是字段,也可是是表达式。value_expr本身不支持分析函数,也就是lead不支持多层调用。
      offset 偏移,表示查询其后第n条记录, 如果不提供这个参数,就是默认为1;
      default 默认值,如果没有找到。如果没有设置,且找不到,那么就返回Null;
      over  分析函数 (可以简单地翻译为在什么。。。的基础之上) ;
      query_partition_clause  分区语句,对结果集合分区的语句,是可选的,如果没有就是所有的一个分区;
      Order_by_clause 排序语句 必须需要 , 如果没有order by 子句,就不是“连续”的。


Lag: 语法结构:

         与Lead相同

     区别是: 表示查询其 第n条记录。



下面是效果,表里面的数据如下:


 

select *
  from (select t.id,
               lead(t.id, 1) over(order by t.id),
               lead(t.id, 2) over(order by t.id),
               lead(t.id, 3) over(order by t.id),
               lead(t.id, 4) over(order by t.id),
               --rank() over(partition by mod(rownum, 5) order by t.id) rk,
               rownum rn
          from importfield t
         order by t.id)
 where mod(rn, 5) = 1

 查询的结果:


—EOF—

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值