Oracle over函数学习
sql over的作用及用法
RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
可实现按指定的字段进行分组,然后按照另一个字段在分组内进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段。over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。其参数:over(partition by columnname1 order by columnname2)。含义:按columname1指定的字段进行分组,然后在分组的基础之上按照columnname2字段在分组内进行排序。
例如:EMP表中,有三个个部门的记录:DEPTNO分别为10、20和30。以下SQL就是指在部门10、20和30三个部门中按照薪水进行排序。
select DEPTNO,SAL,rank() OVER(partition by DEPTNO order by SAL DESC) from EMP
同时需要注意rank()、dense_rank()和Row_number()的区别:
- row_number() 是没有重复值的排序(即使两天记录相等也是不重复的),可以利用它来实现分页
- dense_rank() 是连续排序,两个第二名仍然跟着第三名
- rank() 是跳跃排序,两个第二名下来就是第四名。
例如如下dense_rank和上面rank()语句结果的区别:
select DEPTNO,SAL,DENSE_RANK() OVER(partition by DEPTNO order by SAL) from EMP
对于row_number()结果如下:
select DEPTNO,SAL,row_Number() OVER(partition by DEPTNO order by SAL DESC) from EMP
同时over语句也可以和SUM()语句一起使用,不同的OVER()语句代表不同的求和方式。还以EMP表为例:
- sum(sal) over (partition by deptno order by ename) 按部门“连续”求总和
- sum(sal) over (partition by deptno) 按部门求总和
- sum(sal) over (order by deptno,ename) 不按部门“连续”求总和
- sum(sal) over () 不按部门,求所有员工总和,效果等同于sum(sal)。
select DEPTNO,SAL,SUM(SAL) OVER() 总和,SUM(SAL) OVER(ORDER by SAL) 连续求和 from EMP
select DEPTNO,SAL,SUM(SAL) OVER(partition by deptno) 部门总和,SUM(SAL) OVER(partition by deptno ORDER by SAL) 部门连续求和 from EMP
Oracle over函数学习相关推荐
- Oracle 正则表达式函数学习
正则表达式中的元字符 -n:匹配换行符 -^:匹配字符串的开头位置 如果A是字符串的第一个字符,^A 匹配 A -$:匹配字符串的末尾位置 如果B是字符串的最后一个字符,$B 匹配 B -*:匹配前面 ...
- oracle 单行函数学习、习题和答案
单行函数 –单行函数特征 – 单行函数对单行操作 – 每行返回一个结果 – 有可能返回值与原参数数据类型不一致 – 单行函数可以写在SELECT.WHERE.ORDER BY子句中 – 有些函数没有参 ...
- 【转】oracle PLSQL基础学习
[转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...
- oracle+cast函数+长度,oracle cast() 函数问题
oracle cast() 函数问题 关键字: oracle cast() 函数问题 SQL> create table t1(a varchar(10)); Table created. SQ ...
- Oracle 单行函数
学习Oracle 单行函数: 包括字符函数,数值函数,日期函数,转换函数,通用函数. dual是一个"伪表",可以用来测试函数和表达式. 1, 字符函数 包括大小写控制函数,字符控 ...
- oracle values函数,Oracle文本函数简介
Oracle文本函数使我们常用的函数,下面就为您介绍几种Oracle文本函数的用法,供您参考学习,希望可以让您对Oracle文本函数有更深的认识. (1)UPPER.LOWER和INITCAP 这三个 ...
- oracle 时间集合,oracle 日期函数集合(集中版本)第2/2页
oracle 日期函数集合(集中版本)第2/2页 更新时间:2009年06月16日 23:45:55 作者: oracle 日期函数网上已经有了不少,特我们跟集中一下,免得大家麻烦. 一. 常用日 ...
- Oracle count函数原理,oracle count函数
用来返回查询的行数. 当指定distinct时,不能接order_by_clause: 如果指定表达式,count返回表达式不为空的值: 当指定*号时,它返回所有行,含重复行和空值.count从不返回 ...
- 官方资料:Oracle 10g DBA 学习手册(精心整理,申请加精)
官方资料:Oracle 10g DBA 学习手册(精心整理,申请加精) 目的 本章让您了解如何使用 Oracle Universal Installer (OUI) 安装您的 Oracle 数据库软件 ...
最新文章
- HDU - 3530 Subsequence(单调队列+思维)
- 没有可用软件包 jenkins。_Jenkins分布式构建与并行构建
- java对外sdk提供接口_Android SDK封装,对外提供接口
- 《scikit-learn》数据预处理与特征工程(三)特征选择
- vapor mysql_vapor MySQL 作为Cache
- windows下为eclipse配置pydev
- 重新学习java第一天
- xmind 软件画思维导图
- Android 设置闹铃步骤和基础代码
- 微信H5保存分享图片
- CYCLONEⅡ系列FPGA 总结
- open drain和push pull
- python基础教程_python基础教程百度网盘
- 金融信贷存量客户运营管理
- 如何利用Pycharm将工程文件上传到服务器
- 基于js利用经纬度进行两地的距离计算
- 小米8ios图标包下载_小米Max2开发版刷机包(最新官方固件rom包下载)
- 【微信公众平台】〖问题〗微信公众平台测试号报错,redirect_uri域名与后台配置不一致,错误码10003
- 英国普利茅斯大学:量子计算机与脑机接口的“相生相克”
- 有关项目管理的飞鸽传书2007官网
热门文章
- Android 服务器推送技术
- vb6 combo根据index显示选项内容_按指定次数重复显示,两种方法随意选
- java读取matlab文件_将大文本文件读入MATLAB
- efi分区咋移动到c盘里_怎么手动安装CLOVER到U盘EFI分区
- vins中imu融合_VINS-Mono代码分析与总结(最终版)
- jdk源码分析书籍 pdf_如何阅读源码?
- java return none,返回列表结果为none
- mysql的join语句使用_在MySQL中使用JOIN语句进行连接操作的详细教程
- 短信发送:webservice调用第三方接口发送短信
- liferay 采用URL方式传值