zoukankan      html  css  js  c++  java
  • Oracle分析函数之LEAD和LAG

    LAG 访问结果集中当前行之前的行 LAG (value_expr [,offset] [,default])OVER ( [ partition_by_clause ] order_by_clause )
    LEAD 访问结果集中当前后之后的行 lead(value_expr [,offset][,default]) over([partition_by_clause] order by Order_by_clause)
    参数值说明:
    value_expr 值表达式,通常是字段,也可是是表达式。value_expr本身不支持分析函数,也就是lead不支持多层调用。
    offset 偏移量,如果offset是正数表示顺序下的第几个,如果是负数就是反顺序的第几个。 如果不提供这个参数,就是默认1.
    default 默认值,如果没有找到offset所指定的值,就返回default值。如果没有设置,且找不到,那么就返回Null
    下面是个简单的例子:
    SQL> select deptno,
    2 sal,
    3 ename,
    4 lead(ename, 1, 'lead_ename') over(partition by deptno order by sal) lead_ename,
    5 lag(ename, 1, 'lag_ename') over(partition by deptno order by sal) lag_ename
    6 from emp;
        DEPTNO        SAL ENAME      LEAD_ENAME LAG_ENAME
    ---------- ---------- ---------- ---------- ----------
    10 1300 MILLER CLARK lag_ename
    10 2450 CLARK KING MILLER
    10 5000 KING lead_ename CLARK
    20 800 SMITH JONES lag_ename
    20 2975 JONES FORD SMITH
    20 3000 FORD lead_ename JONES
    30 950 JAMES WARD lag_ename
    30 1250 WARD MARTIN JAMES
    30 1250 MARTIN TURNER WARD
    30 1500 TURNER ALLEN MARTIN
    30 1600 ALLEN BLAKE TURNER
    30 2850 BLAKE lead_ename ALLEN

    已选择12行。
    上面例子说明:lead和lag按deptno分组,并在每个分组里按sal列排序。
    lead(ename, 1, 'lead_ename'),表示取当前行下一个ename值,如果找不到就用'lead_ename'字符串替代;
    lag(ename,1,'lag_ename'),表示取当前行前一个ename值,如果找不到就用'lag_ename'字符串取代。
  • 相关阅读:
    板邓:mysql navicat设置字段默认时间为当前时间
    板邓:wordpress用户和权限名称详细表
    板邓:jQuery设置和获取HTML、文本和值(转)
    板邓:wordpress自定义用户角色和权限全面解析
    板邓:wordpress给订阅者、投稿者上传图片权限
    七牛云
    redis 基础命令
    yeild 理解
    如何访问父类中私有的属性
    php反射
  • 原文地址:https://www.cnblogs.com/zhaoshuangshuang/p/3275807.html
Copyright © 2011-2022 走看看