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

最新文章

  1. Java正则表达式实现字符串的动态多替换
  2. JS中对象排序
  3. Python之ftplib模块
  4. Linux命令学习-top
  5. mac 下的 top 命令
  6. Java提高篇---Map总结
  7. C# 使用ping命令
  8. writeToFile 读写文件问题
  9. Linux SD/MMC/SDIO驱动分析
  10. java文档操作
  11. 分析业务模型-类图(Class Diagram)
  12. 大三小学期 web前端开发的一些小经验
  13. Caused by: java.lang.InstantiationException: cn.at.bean.domain.ConstantInt
  14. mybatis的sqlSessionFactory的加载过程
  15. pl/sql中文乱码
  16. Java之——利用Comparator接口对多个排序条件进行处理
  17. bzoj3997
  18. ABAP-container拆分
  19. ASP.NET简介
  20. MVC中页面传值方式总结

热门文章

  1. 利用路由器搭建受限wifi热点,气死蹭网的坏人~
  2. [置顶] 【GBT28181开发:SIP协议实践】之设备远程启动
  3. flume 自己定义 hbase sink 类
  4. CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决
  5. Android UI设计
  6. iOS中Block介绍 基础
  7. 5.6.3.8 fromCharCode()方法
  8. createNewFile创建空文件夹与createTempFile创建临时文件夹
  9. Linux中fork()函数详解(转载)
  10. IOS FoundationKit (NSString) 知识汇总