看到很多人对于keep不理解,这里解释一下!

Returns the row ranked first using DENSE_RANK

2种取值:

DENSE_RANK FIRST

DENSE_RANK LAST

在keep (DENSE_RANK first ORDER BY sl) 结果集中再取max、min的例子。

SQL> select * from test;

ID MC SL

-------------------- -------------------- -------------------

1 111 1

1 222 1

1 333 2

1 555 3

1 666 3

2 111 1

2 222 1

2 333 2

2 555 2

9 rows selected

SQL>

SQL> select id,mc,sl,

2 min(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id),

3 max(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id)

4 from test

5 ;

ID MC SL MIN(MC)KEEP(DENSE_RANKFIRSTORD MAX(MC)KEEP(DENSE_RANKLASTORDE

-------------------- -------------------- ------------------- ------------------------------ ------------------------------

1 111 1 111 666

1 222 1 111 666

1 333 2 111 666

1 555 3 111 666

1 666 3 111 666

2 111 1 111 555

2 222 1 111 555

2 333 2 111 555

2 555 2 111 555

9 rows selected

SQL>

不要混淆keep内(first、last)外(min、max或者其他):

min是可以对应last的

max是可以对应first的

SQL> select id,mc,sl,

2 min(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id),

3 max(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id),

4 min(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id),

5 max(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id)

6 from test

7 ;

ID MC SL MIN(MC)KEEP(DENSE_RANKFIRSTORD MAX(MC)KEEP(DENSE_RANKFIRSTORD MIN(MC)KEEP(DENSE_RANKLASTORDEMAX(MC)KEEP(DENSE_RANKLASTORDE

-------------------- -------------------- ------------------- ------------------------------ ------------------------------ ------------------------------ ------------------------------

1 111 1 111 222 555 666

1 222 1 111 222 555 666

1 333 2 111 222 555 666

1 555 3 111 222 555 666

1 666 3 111 222 555 666

2 111 1 111 222 333 555

2 222 1 111 222 333 555

2 333 2 111 222 333 555

2 555 2 111 222 333 555

9 rows selected

SQL> select id,mc,sl,

2 min(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id),

3 max(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id),

4 min(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id),

5 max(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id)

6 from test

7 ;

ID MC SL MIN(MC)KEEP(DENSE_RANKFIRSTORD MAX(MC)KEEP(DENSE_RANKFIRSTORD MIN(MC)KEEP(DENSE_RANKLASTORDEMAX(MC)KEEP(DENSE_RANKLASTORDE

-------------------- -------------------- ------------------- ------------------------------ ------------------------------ ------------------------------ ------------------------------

1 111 1 111 222 555 666

1 222 1 111 222 555 666

1 333 2 111 222 555 666

1 555 3 111 222 555 666

1 666 3 111 222 555 666

2 111 1 111 222 333 555

2 222 1 111 222 333 555

2 333 2 111 222 333 555

2 555 2 111 222 333 555

min(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id):id等于1的数量最小的(DENSE_RANK first )为

1 111 1

1 222 1

在这个结果中取min(mc) 就是111

max(mc) keep (DENSE_RANK first ORDER BY sl) over(partition by id)

取max(mc) 就是222;

min(mc) keep (DENSE_RANK last ORDER BY sl) over(partition by id):id等于1的数量最大的(DENSE_RANK first )为

1 555 3

1 666 3

在这个结果中取min(mc) 就是222,取max(mc)就是666

oracle窗口函数中range interval的使用

oracle窗口函数中range interval配合一般用来针对指定时间范围进行统计.其中range表示范围,between...and 表示之前的范围和之后的范围 , CURRENT ROW表示当 ...

ORACLE窗口函数

--ORACLE窗口函数,是针对分析用的. --create tablecreate table EMP ( empno NUMBER(4) not null, ename VARCHAR2(10), ...

Oracle窗口函数显示想要的行数

Oracle中支持窗口函数ROW_NUMBER(),其用法和 MSSQLServer2005中相同,比如我们 执行下面的 SQL语句: SELECT * FROM ( SELECT ROW_NUMBE ...

oracle 窗口函数over

select *,sum(字段) over()from table :--相加所有行这个字段的和 select max(字段1),over(partition by  字段2,字段3) from ta ...

Oracle树形结构数据---常见处理情景

Oracle树形结构数据---常见处理情景 1.查看表数据结构 SELECT *      FROM QIANCODE.TREE_HIS_TABLE T  ORDER BY T.NODE_LEVEL; ...

Hive新功能 Cube, Rollup介绍

说明:Hive之cube.rollup,还有窗口函数,在传统关系型数据(Oracle.sqlserver)中都是有的,用法都很相似. GROUPING SETS GROUPING SETS作为GROU ...

SQL金典

ps:补充自己的基础知识,大神请无视.. ~~~~~~~~~~~~~~~~~~~~~ DataBase Management System,DBMS.... Catalog ...库 Table... ...

LeetCode:180.连续出现的数字

题目链接:https://leetcode-cn.com/problems/consecutive-numbers/ 题目 编写一个 SQL 查询,查找所有至少连续出现三次的数字. +----+--- ...

Oracle开发之窗口函数 rows between unbounded preceding and current row

目录=========================================1.窗口函数简介2.窗口函数示例-全统计3.窗口函数进阶-滚动统计(累积/均值)4.窗口函数进阶-根据时间范围统计 ...

随机推荐

序列化Image到byte[]

using System.Runtime.Serialization.Formatters.Binary; //引入供序列化Image对象使用 /// /// 将byte ...

c++ 打印堆栈代码

namespace google {namespace glog_internal_namespace_ {void DumpStackTraceToString(std::string* stack ...

充满想象力的 JavaScript 物理和重力实验

在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...

Hibernate之组件映射

1:为什么要使用组件映射 答:建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系.以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息 ...

如何修改ECSHOP后台管理中心的Title信息

下图中红色圈定的部分就是本次修改要改的地方 修改方法其实很简单的:打开语言包文件  /languages/zh_cn/admin/common.php 将 $_LANG['app_name'] = ' ...

PetaPoco 笔记

PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项--单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...

could not read data from '/Users/xxxx/myapp-Info.plist'

xcode编译报错如下: could not read data from '/Users/iamme/Documents/XCode/myapp/myapp/myapp-Info.plist': T ...

angularJS广播

控制器之间共享数据(向父级/子级控制器传递event,data),类似于service在不同的控制器中通信 html:

oracle窗口累计函数,oracle 窗口函数 (keep)相关推荐

  1. oracle关于字符串函数,Oracle字符串处理函数

    Oracle字符串处理函数 Oracle字符串处理函数 2008年10月18日 星期六 23:45 项目中有涉及存储过程对字符串的处理,所以就将在网上查找到的资料汇总,做一个信息拼接式的总结. 以下信 ...

  2. oracle中各种函数,oracle中常用函数大全

    1.数值型常用函数 函数 返回值 样例 显示 ceil(n) 大于或等于数值n的最小整数 select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数 s ...

  3. oracle中lead函数,oracle lead()函数 | 学步园

    ead()是一个分析函数,适用于oracle 8i以后的版本, 使用这个函数,你可以一次性从表中查询多条记录, 而不需要进行表的自连接. 返回值:返回与当前行偏离offset行的列值. 语法: lea ...

  4. oracle的连接函数,Oracle各种连接函数总结

    1.前言 Oracle可用连接函数会介绍以下几个 Oracle列转行函数 Listagg() strcat() wmsys.wm_concat() 2.Oracle列转行函数 Listagg() 2. ...

  5. oracle对象权限 函数,oracle的系统和对象权限

    alter any cluster 修改任意簇的权限 alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter any sequence 修改任 ...

  6. oracle调用MySQL函数,Oracle的INSTR函数MySQL实现

    Oracle的INSTR函数MySQL实现 一个迁移项目遇到的,MySQL的instr函数只能查找子串是否在父串中,没法按照出现的次数进行查找.这里我自己写了一个,以便迁移.当然我这里仅仅针对的是迁移 ...

  7. oracle中转换函数,Oracle中的转换函数

    Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...

  8. oracle查看时间戳函数,oracle数据库实现获取时间戳的无参函数

    oracle数据库实现获取时间戳的无参函数 代码如下所示: CREATE OR REPLACE FUNCTION GETMSTIMESTAMP RETURN NUMBER AS MSTIMESTAMP ...

  9. oracle中嵌套函数,Oracle的嵌套函数语法

    Oracle的嵌套函数语法 单行函数可以嵌套任意层: 嵌套函数从最深层开始执行. 通用函数: BFILENAME(directory,file_name) 返回操作系统中与物理文件 file_name ...

最新文章

  1. 美团点评基于 Flink 的实时数仓建设实践
  2. C++ 函数--幽径初探索
  3. IPFS (1) 初步简介
  4. WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
  5. 多元高斯分布(Multivariate Gaussian Distribution)
  6. EditPlus连接远程Linux虚拟机
  7. C++语言基础 —— STL —— 容器与迭代器 —— bitset
  8. shop--7.店铺信息编辑--Controller层
  9. 关于Gateway的几个问题
  10. Java实现List数组的几种替代方案
  11. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例-转...
  12. 核密度函数图matlab_4.3 描述数据分布:核密度图
  13. Java实现简易的文本编辑器
  14. (五)可重入锁ReentrantLock的底层原理实现?
  15. html代码标签优化与提速,HTML代码标签优化与提速
  16. python风控模型举例_一文搞定风控模型6大核心指标(附代码)
  17. 《矩阵理论与方法》lambda矩阵及Jordan标准形
  18. 设置windows桌面的窗口为保护色或豆绿色
  19. IRP(I/O Request Package)详解
  20. 2007-2020年上市公司研发投入匹配数字化转型

热门文章

  1. LeetCode 647. 回文子串 (动态规划)
  2. 【Java 8】教你用 Java 8中的 Optional 更优雅的判空
  3. C++ 动态开辟二维数组的的方法
  4. oracle中对排序的总结(按照拼音、部首、笔画排序功能 )
  5. [习题]给初学者的范例,多重字段搜寻引擎 for GridView,兼论 SqlDataSource与SelectParameter的用法...
  6. 灭霸—个人冲刺(5)
  7. 复习zabbix配置agent过程
  8. Linux 死机时抢救措施
  9. Linux高级编程--06.进程概述
  10. 生活在继续,梦,也要继续