Oracle分析函数浅析(一)聚合分析函数

假如我要查询scott下emp表这样格式的结果

包含三列:雇员名   工资   部门平均工资

以前的做法也许会这么做:

代码
SELECT E.ENAME,E.SAL,AV.AVGSAL
FROM EMP E,
(
SELECT DEPTNO EMP_DEPT,AVG(SAL) AVGSAL FROM EMP GROUP BY DEPTNO) AV
WHERE E.DEPTNO=AV.EMP_DEPT

但有了分析函数以后就可以简化一下:

代码
SELECT ENAME,SAL,AVG(SAL) OVER(PARTITION BY DEPTNO)
FROM EMP

第一种方式的执行计划是:

 
第二种方式 分析函数的执行计划是:
总结:个人认为分析函数可以解决以前聚合函数只会返回一个值的尴尬,效率看起来也挺高的!当然还有很多其它选项,以后有点心得会及时更新!
posted @ 2011-05-26 14:08  KT野人  阅读(275)  评论(0编辑  收藏  举报