• lead 函数和 lag函数


    这两个函数的作用只能通过例子来解释,否则说不明白。

    首先创建一个表

    SQL> create table test (id number, name varchar2(8), val number);
    

    然后插入一些数据

    SQL> select * from test;
    
            ID NAME                            VAL
    ---------- ------------------------ ----------
             1 a                                11
             2 b                                12
             3 c                                13
             4 d                                14
             1 a                                15
             2 b                                16
             2 b                                17
    

    下面看lead函数。

    SQL> select t.id,t.name,t.val ,lead(t.val,1,88) over(partition by t.id order by t.val) as val2 from test t;
    
            ID NAME                            VAL       VAL2
    ---------- ------------------------ ---------- ----------
             1 a                                11         15
             1 a                                15         88
             2 b                                12         16
             2 b                                16         17
             2 b                                17         88
             3 c                                13         88
             4 d                                14         88
    

    首先看 lead函数的 over部分。 我们先忽略第四列。

    partion by t.id是说把数据按照        t.id   分组

    order by t.val 是说把分组后的数据按照    t.val 排序

    这时候我们就得到了前三列组成的结果集。而第四列由 lead(t.val , 1 , 88)组成

    t.val 是说第四列从t.val 生成

    1 是说采取本组当前val的下一个。比如 第一行 t.id=1这组的val是11,下一个是15. 那么这里就是15。

    88 是说如果本组当前下一个val不存在。比如第二行 t.id=1它是 这组的最后一列,所以下一个不存在,就用88代替。

    而lag函数正好相反。

    SQL> select t.id,t.name,t.val ,lag(t.val,1,88) over(partition by t.id order by t.val) as val2 from test t;
    
            ID NAME                            VAL       VAL2
    ---------- ------------------------ ---------- ----------
             1 a                                11         88
             1 a                                15         11
             2 b                                12         88
             2 b                                16         12
             2 b                                17         16
             3 c                                13         88
             4 d                                14         88
    
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    python中单下划线和双下划线的区别
    利用faker 模块创建测试数据
    分页器基本案例思路
    小提醒
  • 原文地址:https://www.cnblogs.com/kramer/p/3435486.html
Copyright © 2020-2023  润新知