Oracle分析函数之FIRST_VALUE和LAST_VALUE
FIRST_VALUE 返回组中数据窗口的第一个值 FIRST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_clause )
LAST_VALUE 返回组中数据窗口的最后一个值 LAST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_clause )
一个简单例子:
SQL> select deptno,
2 sal,
3 ename,
4 first_value(ename) over(partition by deptno order by sal) first_ename,
5 last_value(ename) over(partition by deptno order by sal) last_ename1,
6 last_value(ename) over(partition by deptno) last_ename2
7 from emp;
DEPTNO SAL ENAME FIRST_ENAM LAST_ENAME LAST_ENAME
---------- ---------- ---------- ---------- ---------- ----------
10 1300 MILLER MILLER MILLER KING
10 2450 CLARK MILLER CLARK KING
10 5000 KING MILLER KING KING
20 800 SMITH SMITH SMITH FORD
20 2975 JONES SMITH JONES FORD
20 3000 FORD SMITH FORD FORD
30 950 JAMES JAMES JAMES BLAKE
30 1250 MARTIN JAMES WARD BLAKE
30 1250 WARD JAMES WARD BLAKE
30 1500 TURNER JAMES TURNER BLAKE
30 1600 ALLEN JAMES ALLEN BLAKE
30 2850 BLAKE JAMES BLAKE BLAKE
已选择12行。
上面例子说明:
请注意last_ename1和last_ename2两列的区别,在语法上last_ename2比last_ename1在over中缺少了order by sal的排序操作。
last_value(ename) over(partition by deptno)为以deptno分组的最后一个值,这个很容易理解。
last_value(ename) over(partition by deptno order by sal),会按照deptno分组的基础上按sal列升序排序,取最后一个值,其实只要deptno和sal不是完全一样,
取值都跟当前行ename值相同;如果depetno和sal有相同的行,则按最后一行算(如上面deptno=30并且sal=1250的两行),这点需要特别注意。
Oracle分析函数之FIRST_VALUE和LAST_VALUE的更多相关文章
- Oracle分析函数FIRST_VALUE、LAST_VALUE
FIRST_VALUE.LAST_VALUE分析函数可以按照特定分组和排序取出组内首尾值,语法 FIRST_VALUE { (expr) [ {RESPECT | IGNORE} NULLS ] | ...
- Oracle分析函数-first_value()和last_value()
first_value()和last_value()字面意思已经很直观了,取首尾记录值.例:查询部门最早发生销售记录日期和最近发生的销售记录日期 select dept_id ,sale_date , ...
- oracle分析函数与over()(转)
文章参考:http://blog.csdn.net/haiross/article/details/15336313 -- Oracle分析函数入门-- 分析函数是什么? 分析函数是Oracle专门用 ...
- 小学生之Oracle分析函数
分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不同 ...
- 常用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 :用于计算 ...
- oracle 分析函数和开窗函数
最近遇到一个需求,将查询出的数据按照地区分组,随机取出每个区域的2条数据,这里用到了oracle的分析和开窗函数: 最终写出的sql如下: select * from (select region,r ...
- 强大的oracle分析函数
转载:https://www.cnblogs.com/benio/archive/2011/06/01/2066106.html 学习步骤:1. 拥有Oracle EBS demo 环境 或者 PRO ...
随机推荐
- java_包含抽象方法的枚举类
package ming; enum Operation { PLUS { public double eval(double x, double y) { return x + y; } }, MI ...
- Android四大组件之服务-Service 原理和应用开发详解
一.Android 服务简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Acti ...
- [转]为什么python标准库没有实现链表
实际上刚开始学习一些高级语言的时候我也有同样的疑问,而且即使有链表对应物的语言,链表常常也很少被实际使用.如果是在国外听数据结构的课,老师一般会警告你这只是一个理论概念,实际应用应该实际考察,在通常情 ...
- 最小生成树------Prim算法
定义:设G=(V,E)是一个无向连通图.如果G的生成子图T=(V,E’)是一棵树,则称T是G的一棵生成树(Spanning Tree). 应用生成树可以得到关于一个电网的一组独立的回路方程.第一步是要 ...
- [Search]swf 转mp4,未成功
Need help to convert SWF to something else.. 知道recordmydesktop 和 xvidcap 两个录像软件. 在尝试了自己的净土 下面的 ADSha ...
- (原创)openvswitch实验连载2-cisco模拟器IOU-Web安装及网络环境配置
IOU的使用可以选择自己到官网https://docs.google.com/file/d/0B2AgRhS2cfxCQ01tN2NrQ0pvNUk/edit下载iou-web 软件,然后部署在lin ...
- OpenID说明
OpenID使用手册 摘要: OpenID是一种开放.离散式的用于用户数字标识的开源框架.在网络应用日益充斥的今天,作为终端用户的我们不得不在每个网站上设置帐号,并管理众多的帐号.而采用OpenID技 ...
- Ubuntu将程序图标加到启动器
问题: Ubuntu中安装一些程序的时候图标可能没有放到启动器中,不方便使用. 解决问题: 因为FileZilla这个程序是直接解压缩之后便可以使用的,每次都需要到文件所在目录Filezilla/bi ...
- 第一篇、C_高精度加法
简介: C语言中,整型占4字节,现在要计算两个100(假设)位以内的数想加,如果只是用整型去存储,明显就会越界.那么,我们有什么好的方法去完成这一操作呢? 1.用数组实现 数组中可以可以存储一定长度的 ...
- iOS-深复制(mutableCopy)与浅复制(copy)
浅复制:只复制指向对象的指针,而不复制引用对象本身.对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只是一个指针,对象本身资源还是只有一份(对象引用计数+1),那如果我们对A_copy执 ...