Oracle逐行累加求和

最近遇到一个比较常见的问题,每行记录需要累加求和。这些问题倒不是有多难,主要是在工作的过程中会经常遇到,特别是Oracle自带的一些函数也能够很好地解决这样一些通用的查询计算,在此记录一下。

问题描述:比如查询记录有5行,每行记录有一个数值型的字段。第2行为第1、2行的和;第3行为第1、2、3行的和;第4行为第1、2、3、4行的和;后面依此类推……

解决办法:使用Oracle自带的Over函数。如下例子:

1.建测试表EMP

-- Create table

create table EMP

(

DEPTNO NUMBER(4),

ENAME VARCHAR2(20),

SAL NUMBER(10)

)

tablespace OGDP

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 16

minextents 1

maxextents unlimited

);

2.插入测试数据

insert into emp (DEPTNO,ENAME,SAL) values (1,‘CLARK‘,2450);

insert into emp (DEPTNO,ENAME,SAL) values (2,‘SMITH‘,3000);

insert into emp (DEPTNO,ENAME,SAL) values (3,‘ALLEN‘,1250);

insert into emp (DEPTNO,ENAME,SAL) values (4,‘JAMES‘,950);

查询结果如下:

3.编写SQL(用Over函数)

select t.deptno,

t.sal,

sum(t.sal) over (order by t.deptno) AccuSal

from emp t

查询结果如下:

如上所示就是需要的效果,更多关于Over函数可以参考以下:

时间: 2024-10-01 04:22:57

Oracle逐行累加求和的相关文章

5.24 javascrip累加求和练习

第一种方法 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>累加求和练习 </title> </head> <body> 请输入一个整数:<input type="text" id="text">   <input type

函数阶乘累加求和

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 函数阶乘累加和 { class Program { //没有返回值,没有参数 public void jiehe() { Console.Write("请输入一个整数:"); int a = int.Parse(Console.ReadL

循环操作练习,用户输入3次0-20之间的数字,累加求和

/让用户循环操作,用户输入一个正整数(0-20),如果小于0或大于20都提示输入错误, //如果输入的是0-20之间的数,那么就打印从0到这个数的累加求和, //一共需要用户输入3遍,输入错误不计入这3遍操作当中 int count = 0; for (int k = 1; k >=-1;k++ ) { Console.Write("请输入一个正整数(0-20):"); int a = Convert.ToInt32(Console.ReadLine()); if(count&g

多线程累加求和

多线程问题,很重要的一点是代码和数据分离 看了这篇文章,感觉内部类用的很好玩,略有启发,对其中错误的地方修改了下,并去除了取处理器核数和线程池的代码,重新写了一个demo. Java并发和多线程2:3种方式实现数组求和 其实对这个结果并不满意,因为这个demo中,为各个线程分配任务的方式不太好,太死板,按说应该让各个线程自己去抢任务. package learnThread; import java.util.ArrayList; import java.util.List; import ja

Python vs PHP 冒泡排序和累加求和计算性能测试

测试环境: 处理器i5-3230M,64位Ubuntu 14.04 Python 2.7.6, PHP 5.4.39, PHP 7.0.0-dev(2015/04/21) 测试内容: 冒泡排序:对10个升序的数进行排序,降序输出,循环1百万次. 累加求和:0+1+2+3+...+99999999 冒泡排序测试结果对比: 程序: Python   PHP5       PHP7 耗时: 16.910s  14.715s  8.011s 内存: 35.8m    9.0m       12.5m P

5月11日 函数、练习:阶乘累加求和

一.函数:  一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能.所有的高级语言中都有子程序这个概念,用子程序实现模块的功能.在C#语言中,子程序的作用是由一个主函数和若干个函数构成.由主函数调用其它函数,其它函数也可以互相调用.同一个函数可以被一个或多个函数调用任意多次. 在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用.要善于利用函数,以减少重复编写程序段的工作量. namespace _5月11日_函数 { class Program { //没有

SQL Server 第四堂课 用数据库语言while 循环做累加求和。以及数据库的备份,还原,分离,附加。以及check 约束

drop proc qiuhe create proc qiuhe --用数据库语言做累加求和 @n int as declare @sum int --相当于C#语言里定义变量 declare @i int set @sum=0 --再给变量赋值 ,相当于C#语言里的 int sum=0 set @i=1 -- 相当于for 循环里的 int i=1 (int i=1;i<=n;i++) while @i<[email protected] --for(int i=1;i<=n;i++

累加求和存储过程

--累加求和存储过程 alter proc LeiJiaQiuHe1 @num int--输入参数 as declare @sum int declare @i int set @sum=0 set @i=1 while @i<=@num begin set @sum=@sum+@i set @i=@i+1 end return @sum go declare @jieshou int exec @jieshou=LeiJiaQiuHe1 100 print @jieshou

excel函数累加求和与累计百分比应用

申明:为了方便记忆,该笔记内容纯属拷贝,如与原创雷同,请加我为火山小视频好友:345270311,必将献上好段子已表感谢~ 正传 以下表为例,求公里数的累加求和以及累计百分比. 在D2单元格输入=sum($C$2:C2) 输入完成后按回车键,然后将鼠标放在在D2单元格右下方,待其成为十字时,按住向下拖动,直至最后一个单元格松开. 松开后所有累加求和的结果就出现了. 此时在E2单元格输入=D2/$D$12. 回车以后同样下拉出现结果如下图 在将改列改为百分比形式,在开始界面,下来常规右侧下三角,选