zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    linux服务 ssh
    详细教你两台电脑之间传文件
    openstack之keystone
    Token
    mybatis返回刚刚插入数据的自增长的id值
    事务配置在applicationContext.xml文件中不起作用,控制不了异常回滚
    SSM框架整合
    ssm框架的小总结
    spring_mvc入门项目的小总结
    tcp和udp的网络编程(发送消息及回复)
  • 原文地址:https://www.cnblogs.com/kramer/p/3435486.html
Copyright © 2011-2022 走看看