oracle中的分析函数的使用
2016-04-07 17:25
531 查看
之前进行数据统计时一直用的group by,各种子查询,外链接等等。虽然知道分析函数却用的不太多。最近对分析函数进行进一步的学习,整理一些学习成果。
分析函数语法:
实例:
结果如下:
上面我使用的是当
分析函数语法:
Analytic-Function(<Argument>,<Argument>,…) over( <Query-Partition-Clause> <Order-by-Clause> <Windowing-Clause> )
实例:
SELECT ename 姓名, deptno 部门, sal 薪资, --该员工所在部门的薪资总和 SUM(nvl(sal,0)) over (partition BY deptno ORDER BY deptno) 部门薪资总和 , --该员工所在部门的最高薪资 MAX(nvl(sal,0)) over(partition BY deptno ORDER BY deptno) 部门薪资最大值, --该员工在该部门薪资排行 row_number() over(partition BY deptno ORDER BY nvl(sal,0) desc) 该员工在该部门薪资排行, --该员工在该部门薪资占比(百分制,保留两位小数) round(RATIO_TO_REPORT(nvl(sal,0)) over(partition BY deptno) * 100 ,2)该员工在该部门薪资占比, --该员工在全部部门薪资排行 row_number() over( ORDER BY nvl(sal,0) desc) 该员工在全部部门薪资排行, --该员工的薪资打败了百分之多少的人 round((1-PERCENT_RANK() over( order by nvl(sal,0) desc) )* 100 ,2)打败占比 FROM emp order by deptno
结果如下:
上面我使用的是当
nvl定义当
sal为空时,让其为0,这样一方面的考虑合理性,另一方面是避免空值位于no.1,做排名时,oracle默认将空值置于第一位。当然你也可以使用
NULLS LAST。
相关文章推荐
- oracle RAC搭建过程
- Rman 备份参数 及 oracle 进程理论
- win7 下oracle卸载
- ORACLE 等待事件
- oracle awr报告
- 关于oracle内存的相关知识(about oracle memory control)
- Oracle-一个中文汉字占几个字节?
- 【PL/SQL系列】Oracle存储过程使用动态SQL
- Oracle限权分配和撤销
- 看!oracle 的循环LOOP
- Oracle的sql语句练习题含答案
- Oracle插入数据时,数据中有&符号
- Oracle date问题
- oracle 11g不能导出空表的解决方法
- ORACLE 10升级到10.2.0.5 Patch Set遇到的内核参数检测失败问题
- Oracle创建表空间,用户*****
- ORACLE 11G用于有效期
- Oracle数据库 Null值 总结
- 存储过程建表时出现了权限不足的问题
- oracle事务锁导致事务无法提交的问题