分析函数——avg、sum和count

下面通过一个简单的例子,来理解下分析函数中sum、avg和count的用法。

需求:计算员工表中各个部门每个员工的平均薪水报告,该平均值由当前员工和与之具有相同经理的前一个和后一个三者的平均数.
分析:一要按部门分组,可以按雇佣日期来排序
二设置开窗窗口的大小,ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING

这样就可以实现了,为了标识出平均数是如何算出来的,以便更好的理解分析函数。

SQL> SELECT deptno, ename, hiredate, sal,
2 AVG(sal) OVER (PARTITION BY deptno ORDER BY hiredate
3 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) As sal_avg,
4 sum(sal) OVER (PARTITION BY deptno ORDER BY hiredate
5 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS sal_sum,
6 Count(1) OVER (PARTITION BY deptno ORDER BY hiredate
7 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) As n
8 FROM emp
9 /

DEPTNO ENAME HIREDATE SAL SAL_AVG SAL_SUM N
------ ---------- ----------- --------- ---------- ---------- ----------
10 CLARK 1981-6-9 2450.00 3725 7450 2
10 KING 1981-11-17 5000.00 2916.66666 8750 3
10 MILLER 1982-1-23 1300.00 3150 6300 2
20 SMITH 1980-12-17 800.00 1887.5 3775 2
20 JONES 1981-4-2 2975.00 2258.33333 6775 3
20 FORD 1981-12-3 3000.00 2991.66666 8975 3
20 SCOTT 1987-4-19 3000.00 2366.66666 7100 3
20 ADAMS 1987-5-23 1100.00 2050 4100 2
30 ALLEN 1981-2-20 1600.00 1425 2850 2
30 WARD 1981-2-22 1250.00 1900 5700 3
30 BLAKE 1981-5-1 2850.00 1866.66666 5600 3
30 TURNER 1981-9-8 1500.00 1866.66666 5600 3
30 MARTIN 1981-9-28 1250.00 1233.33333 3700 3
30 JAMES 1981-12-3 950.00 1100 2200 2

14 rows selected

通过上面的例子可以看出,当处理每个开窗窗口中的第一条和最后一条的时候,都是通过sal_sum/n来实现的。
这样就能很好的理解分析函数。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7659204/viewspace-897166/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7659204/viewspace-897166/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值