【Oracle笔记】OVER (PARTITION BY)函数的用法及实例解析
文章目录
- 1、over函数的写法
- 2、开窗的窗口范围
- 3、与over()函数结合的函数的介绍
开窗函数,Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。
1、over函数的写法
over(partition by class order by sroce) 按照sroce排序进行累计,order by是个默认的开窗函数,按照class分区。
2、开窗的窗口范围
over(order by sroce range between 5 preceding and 5 following):窗口范围为当前行数据幅度减5加5后的范围内的。
over(order by sroce rows between 5 preceding and 5 following):窗口范围为当前行前后各移动5行。
3、与over()函数结合的函数的介绍
(1)查询每个班的第一名的成绩
rank()和dense_rank()可以将所有的都查找出来,rank可以将并列第一名的都查找出来;rank()和dense_rank()区别:rank()是跳跃排序,有两个第二名时接下来就是第四名。
SELECT *FROM (SELECT t.name,t.class,t.score,RANK () OVER (PARTITION BY t.class ORDER BY t.score DESC) mmFROM st_score t)WHERE mm = 1;
输出:
张三 1 100 1
赵七 2 99 1
王二 2 99 1
丽丽 3 96 1
(2)在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果。
SELECT *FROM (SELECT t.name,t.class,t.score,row_number () OVER (PARTITION BY t.class ORDER BY t.score DESC) mmFROM st_score t)WHERE mm = 1;
输出:
张三 1 100 1
赵七 2 99 1
丽丽 3 96 1
(3)其他用法
- sum() over(partition by … order by …):求分组后的总和。
- first_value() over(partition by … order by …):求分组后的第一个。
- last_value() over(partition by … order by …):求分组后的最后一个。
- count() over(partition by … order by …):求分组后的总数。
- max() over(partition by … order by …):求分组后的最大值。
- min() over(partition by … order by …):求分组后的最小值。
- avg() over(partition by … order by …):求分组后的平均值。
- lag() over(partition by … order by …):取出前n行数据。
- lead() over(partition by … order by …):取出后n行数据。
【Oracle笔记】OVER (PARTITION BY)函数的用法及实例解析相关推荐
- python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印
python Format()函数的用法___实例详解(一)(全,例多) (格式化替换,关键字替换,列表字典替换,类格式化, 魔法函数格式化,对齐及填充格式化,format对齐打印) 本篇目录内容:
- Python中Print()函数的用法___实例详解(二)(全,例多)
Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...
- php中的ltrim,PHP中ltrim()函数的用法与实例讲解
PHP中ltrim()函数的用法与实例讲解 PHP ltrim() 函数 实例 移除字符串左侧的字符: $str = "Hello World!"; echo $str . &qu ...
- 关于getchar的用法及实例解析
getchar getchar解析 一.getchar的返回类型及作用机制 二.根据一段代码初步了解 三.实例("输入密码")进一步了解 1.代码达不到理想效果 (1)原理详解 ( ...
- mysql去重取最大值,逻辑类似oracle的over(partition by)函数
像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据. oracle方法: 在oracle中,我们可以简单地用over(partition by)函 ...
- Oracle数据库中的instr函数的用法
一.instr函数的用法 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符.在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(so ...
- mysql 去重取最大值_mysql去重取最大值,逻辑类似oracle的over(partition by)函数
像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据. oracle方法: 在oracle中,我们可以简单地用over(partition by)函 ...
- oracle中LPAD()与RPAD()函数的用法-----填充函数
说明:这两个函数最少需要两个参数最多需要三个参数,第一个参数是需要处理的字符串,第二个参数是需要将字符串扩充的宽度,第三个参数表示填充部分的字符.第三个参数的默认值为空格,但也可以是单个的字符或字符串 ...
- python的join函数的用法及实例
目录 1.join函数的语法及用法 (1)语法:'sep'.join(sep_object) (2)用法:连接任意数量的字符串(包括要连接的元素字符串.元组.列表.字典),用新的目标分隔符连接,返回新 ...
最新文章
- Uva592 Island of Logic
- 关于相机标定的问题答复网友
- python argument list too long_[已解决]Argument list too long如何处理?
- 常用并发工具类(线程池)
- 本周四直播预告(内含福利)丨 经典知识库:MGR原理介绍与案例分享
- 九大背包问题专题--混合背包问题(状态转移)
- SQL SERVER 2008 索引、数据存储基本理论【原创】
- java调用python脚本文件_Java实现调用jython执行python文件的方法
- 爆文标题生成器,10W+自媒体人的福音
- QCC512x/302x笔记(3)-- 只改一行代码,实现串口输出调试log
- linux使用du命令查看文件夹大小(磁盘使用情况)
- Mysql 笔记(二)
- easyUI1.7学习第一天_menu表单
- 莎士比亚统计最高的词频数 java,spark,rdd
- (纯原创)分解质因数
- 平头哥RVB2601开发板实现LED彩灯
- 为什么有的已备案域名的备案会被注销?
- 学习笔记--EMI是什么?
- nz-modal 使用
- windows下的300个免费软件