Oracle 分析函数使用一
2011-09-27 10:59
337 查看
1.1.1 over 分析函数用法
1. 用法
sum(salary) over( order by employee) --按照员工的薪水逐条累计显示
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)
2. 使用
--例如:
select ename,
sal,
sum(sal) over(order by ename) 连续求和,
sum(sal) over() 总和,
100 * round(sal / sum(sal) over(), 4) "份额(%)"
from emp;
ENAME SAL 连续求和 总和 份额(%)
---------- ---------- ---------- ---------- ----------
ADAMS 1100 1100 29025 3.79
ALLEN 1600 2700 29025 5.51
BLAKE 2850 5550 29025 9.82
CLARK 2450 8000 29025 8.44
/*体会说明:在"... from emp;"后面不要加order by 子句,
使用的分析函数的(partition by deptno order by sal)里已经有排序的语句了,
如果再在句尾添加排序子句,一致倒罢了,不一致,结果就令人费劲了*/
1.1.2 Rank() 分析函数用法
1. 用法
rank() over( partition by col1 order by col2)
dense_rank over( partition by col1 order by col2)
功能:按照col1进行划分,并根据col2排序的结果给col评级,如果col2值相同,则评级值相同。
区别【dense_rank与rank()】:dence_rank 在处理相同的等级时,等级的数值不会跳过。
rank则跳过,即rank的级值可能是不连续的。
2. 使用
--例如:表test3:A B C
a liu wang
a jin shu
a cai kai
b yang du
b lin ying
b yao cai
b yang 99
--例如:当rank时为:
select m.a,m.b,m.c,rank() over(partitionby a orderby b) liu from test3 m;
A B C LIU
a cai kai 1
a jin shu 2
a liu wang 3
b lin ying 1
b yang du 2
b yang 99 2
b yao cai 4 --区别
--而如果用dense_rank时为:
select m.a,m.b,m.c,dense_rank() over(partitionby aorderby b) liu from test3 m;
A B C LIU
a cai kai 1
a jin shu 2
a liu wang 3
b lin ying 1
b yang du 2
b yang 99 2
b yao cai 3 --区别
相关文章推荐
- oracle分析函数使用
- 【Oracle篇】分析函数的使用
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- Oracle 分析函数的使用
- oracle分析函数row_number() over()使用(2)
- Oracle分析函数ROW_NUMBER()|RANK()|LAG()使用详解
- oracle分析函数row_number() over()使用
- 【转】Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
- oracle分析函数row_number() over()使用
- Oracle 分析函数的使用
- Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
- oracle分析函数row_number() over()使用
- ORACLE 分析函数ratio_to_report的使用
- Oracle 分析函数的使用
- oracle累积求和分析函数sum over的使用
- oracle编程入门笔记2015-01-26--分析函数使用举例
- Oracle技术之使用分析函数进行行列转换
- Oracle分析函数KEEP、DENSE_RANK的使用
- Oracle开发之SQL语句案例—分析函数的使用
- Oracle 分析函数的使用