oracle中 sum() over()使用方法



所用数据:
SELECT  a.deptno, a.employename, a.salary
  
FROM  t_salary a

000001          李可                               1000
000001          李强                               2000
000001          杨彦军                             4000
000002          童家道                             3000
000002          姜文                               3000
000002          罗文                               3000
000003          窨嫡                               3000
000003          童家道                             3000
000003          童家道                             3000
000004          于名                               4000

使用代码:

SELECT  A.deptno, A.employename,A.salary,
-- 1 按照名称进行分区,同时按照名称进行合计 
SUM (A.salary) OVER (PARTITION  BY  A.employename)  AS  SUM_INC_ONLY,
-- 2 按照名称进行累计 
SUM (A.salary) OVER ( ORDER  BY  A.employename)  AS  SUM_INC,
--   和 1 效果相同 
SUM (A.salary) OVER (PARTITION  BY  A.employename  ORDER  BY  A.employename)  AS  SUM_INC_NAME,
-- 4 按照部门分组,部门内进行合计。名称相同时进行累计 
SUM (A.salary) OVER (PARTITION  BY  A.deptno  ORDER  BY  A.employename)  AS  SUM_INC_DEP,
-- 5 按照部门,名称分组,部门名称相同时进行合计 
SUM (A.salary) OVER (PARTITION  BY  A.deptno,A.employename )  AS  SUM_INC_DEP_NAM
FROM  t_salary A


所得结果:
DEPTNO     EMPLOYENAME     SALARY     SUM_INC_ONLY     SUM_INC    SUM_INC_NAME     SUM_INC_DEP     SUM_INC_DEP_NAM
000002      姜文     3000      3000      3000      3000      3000      3000
000001      李可     1000      1000      4000      1000      1000      1000
000001      李强     2000      2000      6000      2000      3000      2000
000002      罗文     3000      3000      9000      3000      6000      3000
000002      童家道     3000      9000      18000      9000      9000      3000
000003      童家道     3000      9000      18000      9000      6000      6000
000003      童家道     3000      9000      18000      9000      6000      6000
000001      杨彦军     4000      4000      22000      4000      7000      4000
000004      于名     4000      4000      26000      4000      4000      4000
000003      窨嫡     3000      3000      29000      3000      9000      3000
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值