1.分析函数有4个 over row_number dense_rank rank 四个 不能单独使用
2.select empno, sal ,deptno,sum(sal) over(order by empno) , sum(sal) over() from emp; 视图如下 按照工资进行累加
oracle 函数之分析函数_第1张图片
3 select empno, sal ,deptno,
sum(sal) over(partition by deptno) , --每个部门的累加总和
sum(sal) over(order by deptno), --部门总和 进行累加
sum(sal) over(partition by deptno order by empno), --先分部门 然后在各自的部门下进行累加
sum(sal) over()
from emp; 视图如下
oracle 函数之分析函数_第2张图片

4 select empno,deptno,ename,
row_number() over(order by deptno ), --根据部门号 按照先后顺序 流水号增加
dense_rank() over(order by deptno), --根部部门号 严格按照大小进行排序可以并列
rank() over(order by deptno) --根部部门号 严格按照大小进行排序可以并列 但是会出现跳号 应为并 别的两个1把 2 3占用了直接就是4
from emp; --order by 后面可以跟desc 降序排列

        ![](https://s1.51cto.com/images/blog/201712/30/fec3790e195983a037edbfe9df575d8e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)