最近遇到一个比较常见的问题,每行记录需要累加求和。这些问题倒不是有多难,主要是在工作的过程中会经常遇到,特别是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函数可以参考以下:

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

  1. ORACLE逐行累计求和方法(OVER函数)

    1.RANK ( ) OVER ( [QUERY_PARTITION_CLAUSE] ORDER_BY_CLAUSE ) DENSE_RANK ( ) OVER ( [QUERY_PARTITION_ ...

  2. 用return关键字实现1——100累加求和,返回总和并接收输出

    package com.Summer_0419.cn; /** * @author Summer * 用return关键字实现1——100累加求和,返回总和并接收输出 */ public class ...

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

    申明:为了方便记忆,该笔记内容纯属拷贝,如与原创雷同,请加我为火山小视频好友:345270311,必将献上好段子已表感谢~ 正传 以下表为例,求公里数的累加求和以及累计百分比. 在D2单元格输入=su ...

  4. 使用Storm实现累加求和操作

    package com.csylh; import org.apache.storm.Config; import org.apache.storm.LocalCluster; import org. ...

  5. sh_04_累加求和

    sh_04_累加求和 # 计算 0 ~ 100 之间所有数字的累计求和结果 # 0. 定义最终结果的变量 result = 0 # 1. 定义一个整数的变量记录循环的次数 i = 0 # 2. 开始循 ...

  6. oracle分析函数 之分组累加求和

    select s.slice_date_to ,s.made_id ,sum(s.steup_count)over(partition by s.made_id order by s.slice_da ...

  7. [moka同学笔记]Yii2.0循环查询并对结果累加求和

    在控制器中查询好数据  $model 在视图中输入 <?php foreach($model as $key=>$r):?> <tr class="text-cent ...

  8. oracle中sum求和问题

    如列表所示:都是选填字段name   age salary weight张三     18      20李四     17王五     21燕小六  15      22 sum(age+salar ...

  9. stream之累加求和

    1.集合中直接包含BigDecimal元素的累加 List<Integer> list = new ArrayList<>();list.add(3);list.add(7); ...

随机推荐

  1. java的表达式

    Java是面向表达式的语言,Java中一个简单表达式可以是下面任意一种: ● 常量:7.false.● 单引号括起来的字符字面常量:'A'.'3'.● 双引号括起来的字符串字面常量:"foo ...

  2. iOS设计模式——MVC(Model-View-Controller)

    Modol View Controller(MVC)是一种最早的也是最成功的可重用的设计模式,70年代的时候首次在smaltalk编写的程序中成功使用.基于MVC设计 模式,Cocoa整体架构可以划分 ...

  3. c++中string::function集合

    string append() 1.直接添加另一个完整的字符串: str1.append(str2); 2.添加另一个字符串的某一段字串:    str1.append(str2, 11,  7); ...

  4. iOS网络请求基础

    这篇是关于网络请求的,结合公司的实际情况编写,如果有不同意见欢迎留言共同讨论. iOS在9.0之后彻底放弃了NSURLConnection,现在已经改用了NSURLSession进行网络请求.一般现在 ...

  5. 反射以及 getDeclaredMethods()和getMethods()区别

    内容转载自http://blog.csdn.net/ljphhj/article/details/12858767 package cn.lee.demo; import java.lang.refl ...

  6. Problem E: Product

    Problem E: ProductTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 18 Solved: 14[Submit][Status][Web Bo ...

  7. 一张图解释---Java多态

    1.向上转型:编译器自动进行,不需要声明 Snowboard s = new Snowboard (); Object o = s; (相当于指向Snowboard的内部Object实例,所有类都继承 ...

  8. IOS 播放音频

    1,播放短音频 #import <AudioToolbox/AudioToolbox.h>#import "GLYViewController.h"static voi ...

  9. 使用HISTCONTROL强制history忽略某条特定命令

    http://www.linuxnote.org/mandatory-use-of-histcontrol-ignore-a-certain-specific-command-history.html ...

  10. HDU 1000 A + B Problem

    #include int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) printf("%d\n&q ...