`

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—

 

  • 大小: 7.4 KB
  • 大小: 9.9 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics