文章目录

  • 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)函数的用法及实例解析相关推荐

  1. python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

    python Format()函数的用法___实例详解(一)(全,例多) (格式化替换,关键字替换,列表字典替换,类格式化, 魔法函数格式化,对齐及填充格式化,format对齐打印) 本篇目录内容:

  2. Python中Print()函数的用法___实例详解(二)(全,例多)

    Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...

  3. php中的ltrim,PHP中ltrim()函数的用法与实例讲解

    PHP中ltrim()函数的用法与实例讲解 PHP ltrim() 函数 实例 移除字符串左侧的字符: $str = "Hello World!"; echo $str . &qu ...

  4. 关于getchar的用法及实例解析

    getchar getchar解析 一.getchar的返回类型及作用机制 二.根据一段代码初步了解 三.实例("输入密码")进一步了解 1.代码达不到理想效果 (1)原理详解 ( ...

  5. mysql去重取最大值,逻辑类似oracle的over(partition by)函数

    像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据. oracle方法: 在oracle中,我们可以简单地用over(partition by)函 ...

  6. Oracle数据库中的instr函数的用法

    一.instr函数的用法 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符.在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(so ...

  7. mysql 去重取最大值_mysql去重取最大值,逻辑类似oracle的over(partition by)函数

    像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据. oracle方法: 在oracle中,我们可以简单地用over(partition by)函 ...

  8. oracle中LPAD()与RPAD()函数的用法-----填充函数

    说明:这两个函数最少需要两个参数最多需要三个参数,第一个参数是需要处理的字符串,第二个参数是需要将字符串扩充的宽度,第三个参数表示填充部分的字符.第三个参数的默认值为空格,但也可以是单个的字符或字符串 ...

  9. python的join函数的用法及实例

    目录 1.join函数的语法及用法 (1)语法:'sep'.join(sep_object) (2)用法:连接任意数量的字符串(包括要连接的元素字符串.元组.列表.字典),用新的目标分隔符连接,返回新 ...

最新文章

  1. Uva592 Island of Logic
  2. 关于相机标定的问题答复网友
  3. python argument list too long_[已解决]Argument list too long如何处理?
  4. 常用并发工具类(线程池)
  5. 本周四直播预告(内含福利)丨 经典知识库:MGR原理介绍与案例分享
  6. 九大背包问题专题--混合背包问题(状态转移)
  7. SQL SERVER 2008 索引、数据存储基本理论【原创】
  8. java调用python脚本文件_Java实现调用jython执行python文件的方法
  9. 爆文标题生成器,10W+自媒体人的福音
  10. QCC512x/302x笔记(3)-- 只改一行代码,实现串口输出调试log
  11. linux使用du命令查看文件夹大小(磁盘使用情况)
  12. Mysql 笔记(二)
  13. easyUI1.7学习第一天_menu表单
  14. 莎士比亚统计最高的词频数 java,spark,rdd
  15. (纯原创)分解质因数
  16. 平头哥RVB2601开发板实现LED彩灯
  17. 为什么有的已备案域名的备案会被注销?
  18. 学习笔记--EMI是什么?
  19. nz-modal 使用
  20. windows下的300个免费软件

热门文章

  1. nba球员与三国武将
  2. 职教平台粉笔科技赴港IPO 多项竞争优势力促业务增长
  3. 笔记 --- ES6 标签模板 tagged template
  4. Redis服务设置密码
  5. Hive-HQL语句调优
  6. windows自带的特殊符号输入
  7. 【专业造轮子】 一位大神的编程之路,让我大吃一惊
  8. COCO/VOC 数据集加速下载
  9. npm install常见报错及问题
  10. 【python】SVM算法介绍