oracle 计算年累计,ORACLE计算累计和

先来看一下表中的原始数据

SQL> select ename,sal from emp;

ENAME             SAL

---------- ----------

SMITH             800

ALLEN            1600

WARD             1250

JONES            2975

MARTIN           1250

BLAKE            2850

CLARK            2450

SCOTT            3000

KING             5000

TURNER           1500

ADAMS            1100

ENAME             SAL

---------- ----------

JAMES             950

FORD             3000

MILLER           1300

14 rows selected.

OK,现在我们通过SUM()OVER()来实现累计的功能

SQL> select ename,sal,

2  sum(sal) over(order by sal) as total

3  from emp;

ENAME             SAL      TOTAL

---------- ---------- ----------

SMITH             800        800

JAMES             950       1750

ADAMS            1100       2850

WARD             1250       5350

MARTIN           1250       5350MILLER           1300       6650

TURNER           1500       8150

ALLEN            1600       9750

CLARK            2450      12200

BLAKE            2850      15050

JONES            2975      18025

ENAME             SAL      TOTAL

---------- ---------- ----------

SCOTT            3000      24025

FORD             3000      24025KING             5000      29025

仔细看一下红色标注出来的部分,好像有问题哦,因为两者的sal是一样的。下面我们在over()中加一个字段再看看结果。

SQL> select ename,sal,

2  sum(sal) over(order by sal,empno) as total

3  from emp;

ENAME             SAL      TOTAL

---------- ---------- ----------

SMITH             800        800

JAMES             950       1750

ADAMS            1100       2850

WARD             1250       4100

MARTIN           1250       5350

MILLER           1300       6650

TURNER           1500       8150

ALLEN            1600       9750

CLARK            2450      12200

BLAKE            2850      15050

JONES            2975      18025

ENAME             SAL      TOTAL

---------- ---------- ----------

SCOTT            3000      21025

FORD             3000      24025

KING             5000      29025

14 rows selected.

这下就好了,得到我们想要的正确结果了。因为光凭sal一个字段是无法唯一的标识一条记录的,加上empno字段就可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值