今天在熟悉项目的某个功能模块时,查看mybatis的映射文件内发现这样的一串sql:

 

(T.NET_VALUE - LEAD(T.NET_VALUE)OVER(ORDER BY T.ESTIMATE_DATE DESC, T.NET_VALUE)) / LEAD(T.NET_VALUE) OVER(ORDER BY T.ESTIMATE_DATE DESC,T.NET_VALUE)

因原来进行开发时,并没有用到此函数 所以在网上查询了一点资料 对leadover的解释如下:

Lead分析函数可以在同一次查询中获取第N行后同样字段的数据作为独立的列

换句话说就是通过这个函数能拿到当前列之前的第n条数据

例子:

  目前有如下内容的一张表:

select rownum rn, temp.*
from (select 1 as id from dual
union
select 2 as id from dual
union
select 3 as id from dual
union
select 4 as id from dual) temp

  执行之后是这样的result:

  

再执行以下sql:

select t.rn,
lead(t.rn) over(order by t.rn ) as next_val,
from (select rownum rn, temp.*
from (select 1 as id from dual
union
select 2 as id from dual
union
select 3 as id from dual
union
select 4 as id from dual) temp) t;

  执行完之后result为:

  

  可见函数的返回值是下一条数据的rn这一列

  跟lead函数相似的还有lag函数 不过lag函数式获取上一条的数据 跟lead正好相反

  这两个函数可以在需要根据某一列的上一条或者下一条数据进行判断的时候派上用场~

 

lead over 和 lag over的更多相关文章

  1. lead 函数和 lag函数

    这两个函数的作用只能通过例子来解释,否则说不明白. 首先创建一个表 SQL> create table test (id number, name varchar2(8), val number ...

  2. Hive学习之路 (十六)Hive分析窗口函数(四) LAG、LEAD、FIRST_VALUE和LAST_VALUE

    数据准备 数据格式 cookie4.txt cookie1, ::,url2 cookie1, ::,url1 cookie1, ::,1url3 cookie1, ::,url6 cookie1, ...

  3. oracle中LAG()和LEAD()以及over (PARTITION BY)

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

  4. MDX函数(官方顺序,带示例)

    MDX函数(官方顺序) 1.  AddCalculatedMembers (MDX) 返回通过将计算成员添加到指定集而生成的集. 语法: AddCalculatedMembers(Set_Expres ...

  5. Hive 窗口函数、分析函数

    1 分析函数:用于等级.百分点.n分片等 Ntile 是Hive很强大的一个分析函数. 可以看成是:它把有序的数据集合 平均分配 到 指定的数量(num)个桶中, 将桶号分配给每一行.如果不能平均分配 ...

  6. Oracle小技巧

    Oracle纵向变横向,多行变一行 取处方下的药品大类,以 处方    药品大类 a001   中药.西药,中成药的   的格式显示 /*处方与药品大类的对应 周璇球 20130829*/ SELEC ...

  7. ITU-T G.1080 IPTV的体验质量(QoE)要求 (Quality of experience requirements for IPTV services)

    IPTV的服务质量(QoE)要求 Quality of experience requirements for IPTV services Summary This Recommendation de ...

  8. MySQL 8.0 新增SQL语法对窗口函数和CTE的支持

    尝试了一下MySQL 8.0的部分新特性. 如果用过MSSQL或者是Oracle中的窗口函数(Oracle中叫分析函数), 然后再使用MySQL 8.0之前的时候,就知道需要在使用窗口函数处理逻辑的痛 ...

  9. Hive中的窗口函数

    简介 本文主要介绍hive中的窗口函数.hive中的窗口函数和sql中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析 概念 我们都知道在sql中有一类函数叫做聚合函数,例如su ...

随机推荐

  1. js和.net后台交互

    1.asp.net呼叫js                        Response.Write("<script language=javascript>"); ...

  2. ArcGIS 10.1 如何连接数据库(转)

    原文地址:http://blog.csdn.net/arcgis_cs/article/details/7750893 ArcGIS 10.1如何连接数据库 最近在使用ArcGIS 10.1的数据库, ...

  3. 斐波那契数列(C++ 和 Python 实现)

    (说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 1. 写一个函数,输入 n, 求斐波那契(Fibonacci ...

  4. GIT团队合作探讨之二--Pull Request

    pull request是github/bitbucket给开发人员实现便利合作提供的一个feature.他们提供一个用户友好的web界面在进代码之前来讨论这些变更. 简单说,pull request ...

  5. 微软智能云Azure – 中国首家官方支持CoreOS的公有云

    北京2016年6月24日, 在由中国开源软件推进联盟(COPU)主办, 开源社协办,微软赞助的“第十一届开源中国开源世界高峰论坛”上,微软亚太研发集团云计算高级总监梁戈碧女士正式对外宣布一个令人振奋的 ...

  6. jQuery Validate 无法验证 chosen-select元素

    chosen-select元素执行了chosen()方法后,为select元素加上了style="display: none;"进行隐藏,然后重新构造了一个看起来像select的下 ...

  7. 【Leetcode】【Medium】Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tr ...

  8. linux系统参数

    vm.swappiness = 清理掉cache给新的程序用当然可以, 但也带来了新的问题, 也就是如果这些(原来cache里的)数据还要使用, 又得重新cache. 产生了新的IO, 新的wait. ...

  9. 最新-Linux常用命令大全-随时更新

      一.系统管理与设置 1.信息显示命令 # man & info  //帮助手册 # man 命令 //显示相应命令的帮助内容 # arch  //显示当前系统体系结构 # cal  //显 ...

  10. Linux内核收包过程

    net/core/dev.c int __init net_dev_init(void) { queue->backlog.poll = process_backlog; open_softir ...