oracle 分析函数中 keep关键字的使用
语法
min | max(column1) keep (dense_rank first | last order by column2) over (partion by column3);
另外first last还可以结合avg sum等使用。
解释:
返回按照column3分组后,按照column2排序的结果集中第一个或最后一个最小值或最大值column1。
实例:
create table tx2(id1 int ,id2 int,id3 int);
insert into tx2(id1,id2,id3)
values(1,111,1);
insert into tx2(id1,id2,id3)
values(1,222,1);
insert into tx2(id1,id2,id3)
values(1,333,2);
insert into tx2(id1,id2,id3)
values(1,444,3);
insert into tx2(id1,id2,id3)
values(2,555,1);
insert into tx2(id1,id2,id3)
values(2,666,2);
insert into tx2(id1,id2,id3)
values(2,777,3);
select * from tx2;
ID1 ID2 ID3
1 111 1
1 222 1
1 333 2
1 444 3
2 555 1
2 666 2
2 777 3
SQL1,
按照ID1分组,ID3排序后,第一个最小的ID2,预期ID1=1的是111 ID1=2的是555。执行结果:
SELECT t.id1, t.id2, t.id3, MIN(t.id2) keep(dense_rank FIRST ORDER BY t.id3) over(PARTITION BY t.id1) ASminval FROM tx2 t;
ID1 ID2 ID3 MINVAL
1 111 1 111
1 222 1 111
1 333 2 111
1 444 3 111
2 555 1 555
2 666 2 555
2 777 3 555
SQL2,
按照ID1分组,ID3排序后,最后一个最小值ID2,预期ID1=1的是444,ID1=2的是777,。执行结果:
SELECT t.id1, t.id2, t.id3, MIN(t.id2) keep(dense_rank last ORDER BY t.id3) over(PARTITION BY t.id1) AS minvalFROM tx2 t;
ID1 ID2 ID3 MINVAL
1 111 1 444
1 222 1 444
1 333 2 444
1 444 3 444
2 555 1 777
2 666 2 777
2 777 3 777
SQL3,
如果ID3有重复,比如ID1=1,ID3=1的两个数据。此时
SELECT t.id1, t.id2, t.id3, MAX(t.id2) keep(dense_rank FIRST ORDER BY t.id3) over(PARTITION BY t.id1) asmaxval FROM tx2 t;
预期结果ID1=1的值应为444,可是
ID1 ID2 ID3 MAXVAL
1 111 1 222----------------结果好像是从ID3=1的分组中取出来的
1 222 1 222
1 333 2 222
1 444 3 222
1 888 3 222
2 555 1 555
2 666 2 555
2 777 3 555
SQL4,
oracle 分析函数中 keep关键字的使用的更多相关文章
- Oracle 数据库中日期时间的插入操作
Oracle 中如何插入日期时间类型的数据,首先为了演示, 新建数据表如下 create table t( mydate date); 插入日期时间 SQL> insert into t val ...
- 如何查询oracle中的关键字
如何查询oracle中的关键字,执行: select * from v$reserved_words
- 【oracle】Oracle中as关键字
在Oracle中as关键字不能用于指定表的别名 在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可 但as关键字可以用于指定列的别名 但在存储过程中如果列的别名与原有列名相同,在 ...
- [转]oracle 分析函数over
oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. O ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- Oracle分析函数及常用函数: over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名
(1) 函数: over()的作用及用法: -- 分区(分组)求和. sum() over( partition by column1 order by column2 )主要用来对某个字 ...
- Oracle分析函数大全
分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...
- Oracle分析函数Over()
一.Over()分析函数 说明:聚合函数(如sum().max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录.若想对于某组返回多行记录,则需要使用分析函数. 1.rank( ...
- Oracle分析函数巧妙使用
在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...
随机推荐
- 详解Linux Initrd
在Linux操作系统中,有一项特殊的功能--初始化内存盘INITRD(INITial Ram Disk)技术,而且内核支持压缩的文件系统映像.有了这两项功能,我们可以让Linux系统从小的初始化内存盘 ...
- 基于jQuery的一个提示功能的实现
最近有点忙,没有时间更新自己的博客,只能说我在原地踏步了,不知道你们进步了没有? 今天给大家分享一个提示的实现,有点简单,适合小白同学学习.下面是效果图 提示的功能: 当鼠标进入“我的菜单”的子菜单时 ...
- linux之软件安装
一.软件包管理简介 1)软件包分类 1.源码包 优点: 开源, 如果有足够的能力, 可以修改源代码 可以自由选择所需的功能 软件是编译安装, 所以更加适合自己的系统, 更加稳定也效率更高 卸载方便 缺 ...
- 搞定导致CPU爆满的“罪魁祸首”
昨天,正忙着,一个用户来电,说一个系统非常缓慢,导致整个系统无法正常使用,必须马上处理,先看系统资源,通过用户反馈的信息,内存,IO没问题,CPU资源严重紧张,idle持续为零,堆积任务达几百个,系统 ...
- 【JSOI2008】星球大战 (并查集)
题面 Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星 ...
- 【POJ2387】Til the Cows Come Home (最短路)
题面 Bessie is out in the field and wants to get back to the barn to get as much sleep as possible bef ...
- html备战春招の一
html不是一种编程语言,而是一种标记语言,通过使用标签来标记网页. 对于中文网页需要使用 <meta charset="utf-8"> 声明编码,否则会出现乱码.有些 ...
- 14.C++-二阶构造模式、友元(详解)
首先回顾以前所学的构造函数 类的构造函数用于对象的初始化 构造函数与类同名并且没有返回值 构造函数在定义时被自动调用 由于构造函数没有返回值不能判断执行结果,所以不能保证初始化对象能否成功 比如: c ...
- RouterPassView——路由器密码查看工具
大多数现代路由器都可以让您备份一个文件路由器的配置文件,然后在需要的时候从文件中恢复配置.路由器的备份文件通常包含了像您的ISP的用户名重要数据/密码,路由器的登录密码,无线网络的KEY. 如果你忘记 ...
- Python3基础教程1——Python的环境搭建
2018年3月8日 当然推荐一个比较系统的教程 http://www.runoob.com/python3/python3-tutorial.html 人家也写的也比我好啦 本教程为新手向的,请大佬跳 ...