博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 中 over() 函数
阅读量:5021 次
发布时间:2019-06-12

本文共 1608 字,大约阅读时间需要 5 分钟。

over() 函数功能:

分析函数是 Oracle 专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。
 
分析函数和聚合函数的区别:
普通的聚合函数用 group by 分组,每个分组返回一个统计值,而分析函数采用 partition by 分组,并且每组每行都可以返回一个统计值。
 
over() 函数语法:
over() 分析函数经常与
分组
排序
窗口三种子句结合使用。同时,over() 分析函数还经常与 sum()、rank()、min() 等函数结合使用。
注意:分组、排序、窗口三种子句可
自由结合
1.分组
分组语句格式为 over(partition by
partition_col)
通过分组子句,将可以基于每条记录中对应的分区字段,对数据进行分组。随后基于分组,结合 
sum()、rank()、min() 等
函数进行运算。
例如:查找对每个员工的工资,并显示其所在部门的最高工资。
SQL>  SELECT userid, salary, deptid, sum(salary) over(partition by deptid)
FROM salary;
2.排序
分组语句格式为  over(order by 
order_col)
通过排序子句,将可以基于每条记录中对应的排序字段,做以排序字段值为边界的排序(每条记录的排序可能不同)。随后基于排序,结合
 
sum()、rank()、min() 等
函数进行运算。
例如:查找对每个员工的工资,并显示不高于其工资的总工资和。
SQL> SELECT userid, salary, deptid, sum(salary) over(order by salary asc)
FROM salary;
例如:查找对每个员工的工资,并显示不低于其工资的总工资和。
SQL> SELECT userid, salary, deptid, sum(salary) over(order by salary desc)
FROM salary;
3.窗口
分组语句格式为 over(order by
order_col [rows | range] between
xxx preceding and
yyy following)
首先通过排序子句,将可以基于每条记录中对应的排序字段,做以排序字段值为中心,
xxx 值为向前范围,
yyy 为向后范围的排序(每条记录的排序可能不同)。随后基于排序,结合 sum()、rank()、min() 等函数进行运算。
注意:建设排序字段值为
a,则窗口的大小为 (
a -
xxx ) <= range <= (
a +
yyy )。
例如:查找对每个员工的工资,并显示按工资排序,工资比他低的前两位员工与其自身的工资和。
SQL>  SELECT userid, salary, deptid, sum(salary) over(partition by deptid order by salary rows BETWEEN 2 preceding AND 0 following)
FROM salary;
 
例如:查找对每个员工的工资,并显示比他工资少 800 元以内(含 800 元),且不高于他工资的工资和。
SQL>  SELECT userid, salary, deptid, sum(salary) over(partition by deptid order by salary range BETWEEN 800 preceding AND 0 following)
FROM salary;
 
 
 
 

转载于:https://www.cnblogs.com/autopenguin/p/6736571.html

你可能感兴趣的文章
Nuxeo Contributes Core to Eclipse Foundation
查看>>
threejs 坐标系
查看>>
HDU 1856
查看>>
课堂作业01--架构师的职责
查看>>
iOS计算富文本(NSMutableAttributedString)高度
查看>>
2017/09/15 ( 框架2)
查看>>
21张图诠释微软40年历史
查看>>
16种方法实现水平居中垂直居中
查看>>
工作中MNU010 至 MNU140表的名称及作用
查看>>
【Flask】Sqlalchemy limit, offset slice操作
查看>>
Ajax
查看>>
Net特性与反射 DEMO
查看>>
Ext秒表
查看>>
编写nios-shell时想到的问题-回车vs换行
查看>>
IOS zepto live事件绑定不了
查看>>
部署ionic开发环境
查看>>
idea导入eclipse项目
查看>>
4.17 上午
查看>>
mschart用法
查看>>
[Luogu] 高斯消元法
查看>>