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'字符串取代。
Oracle分析函数之LEAD和LAG的更多相关文章
- [转]SQL Server 2012 的 T-SQL 新功能 – 新的数据分析函数(LEAD、LAG)
当您需要在 SQL Server 中利用 T-SQL 比较结果集的每一列跟前一列或后一列的差异时,在过去可能需要利用 CURSOR 搭配临时表变量,或是透过递归 CTE 来达到这个效果,如今 SQL ...
- SQL SERVER LEAD和LAG使用
示例:获取在48小时之内重复的记录 SELECT * FROM ( SELECT b.* , LAG(b.OperatorTime, , b.OperatorTime) OVER ( PARTITIO ...
- Hive 分析函数lead、lag实例应用
Hive的分析函数又叫窗口函数,在oracle中就有这样的分析函数,主要用来做数据统计分析的. Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead) ...
- [转]oracle 分析函数over
oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. O ...
- oracle 分析函数
认识分析函数 分析函数是什么? 分析函数是oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数 ...
- [置顶] ORACLE分析函数(1)
分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和sum,求平均AVG等,对于 ...
- 常用Oracle分析函数详解 [http://www.cnblogs.com/benio/archive/2011/06/01/2066106.html]
学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理 ...
- oracle分析函数技术详解(配上开窗函数over())
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
随机推荐
- div 显示滚动条的CSS代码
div 显示滚动条的CSS代码 div显示上下左右滚动条 <div style="width:260px;height:120px; overflow:scroll; border ...
- C#_MVC_分页update
private static string getLinkHtml(UrlHelper urlHelper, bool useAjax, string ajaxSuccessFunction, str ...
- Asp.Net 之 调用远程Web_Service
一.添加web service引用 1.右键 Web 项目 → “添加服务引用”: 2.右键已有的 App_WebReferences 文件夹 → “添加服务引用”: 二.引用远程web servic ...
- web前端开发前景怎么样?
对于web前端开发,对现今前端的发展,中国的发展还很落后,中国没有Jquery,没有Node.js,其中最主要的一点是,中国的前端比较封锁,大家都没有分享的觉悟.回头看看,那些发展比较快的行业.软件, ...
- Java基础知识强化之IO流笔记69:Properties练习之 判断文件中是否有指定的键,如果有就修改值的案例
1. 我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如果有就改变其值为"100& ...
- Java中double类型数据的精度问题
今天在写段代码模拟计算器的时候,偶然发现,当我进行小数运算的时候,竟然出现了令我惊讶的结果,后来问了问度娘,才晓得,原来这里面还有点知识呢,下面是介绍: 你猜下面几句的结果是多少? public cl ...
- LVS配置与安装
IP和主机准备: 准备VIP :20.20.20.1 lvs主机 :172.24.22.70 HA主机:172.24.22.4 包准备:ipvsadm-1.24.tar.gz 1.安装前配置包 2. ...
- oracle学习总结3
1:ddl语句创建一张学生表 create table stu(id number(6) not null,name varchar2(20),age number(3),gender char(1) ...
- Java队列实现
队列数组实现:队列长度有限,但是考虑到平时一般都使用有界队列,这应该也不算是个缺点 public class Queue { private Object[] objs; private int he ...
- Linux安装后的系统配置
第一步: Linux系统安装之后,可以设置系统的日期和时间.给系统添加用户.安装软件.在Red Hat网络中注册机器以及完成其他任务.设置代理将允许用户从一开始就配置环境,从 而使用户能够快速地开始使 ...