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函数可以参考以下:
最新文章
- Java正则表达式实现字符串的动态多替换
- JS中对象排序
- Python之ftplib模块
- Linux命令学习-top
- mac 下的 top 命令
- Java提高篇---Map总结
- C# 使用ping命令
- writeToFile 读写文件问题
- Linux SD/MMC/SDIO驱动分析
- java文档操作
- 分析业务模型-类图(Class Diagram)
- 大三小学期 web前端开发的一些小经验
- Caused by: java.lang.InstantiationException: cn.at.bean.domain.ConstantInt
- mybatis的sqlSessionFactory的加载过程
- pl/sql中文乱码
- Java之——利用Comparator接口对多个排序条件进行处理
- bzoj3997
- ABAP-container拆分
- ASP.NET简介
- MVC中页面传值方式总结
热门文章
- 利用路由器搭建受限wifi热点,气死蹭网的坏人~
- [置顶] 【GBT28181开发:SIP协议实践】之设备远程启动
- flume 自己定义 hbase sink 类
- CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决
- Android UI设计
- iOS中Block介绍 基础
- 5.6.3.8 fromCharCode()方法
- createNewFile创建空文件夹与createTempFile创建临时文件夹
- Linux中fork()函数详解(转载)
- IOS FoundationKit (NSString) 知识汇总