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
第一种方式的执行计划是:
第二种方式 分析函数的执行计划是:
总结:个人认为分析函数可以解决以前聚合函数只会返回一个值的尴尬,效率看起来也挺高的!当然还有很多其它选项,以后有点心得会及时更新!