ORACLE逐行累计求和方法(OVER函数)
1.
RANK ( ) OVER ( [QUERY_PARTITION_CLAUSE] ORDER_BY_CLAUSE )
DENSE_RANK ( ) OVER ( [QUERY_PARTITION_CLAUSE] ORDER_BY_CLAUSE )
可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,
其中PARTITION BY 为分组字段,ORDER BY 指定排序字段。
2.
OVER 不能单独使用,要和分析函数:RANK(),DENSE_RANK(),ROW_NUMBER()等一起使用。
其参数:OVER(PARTITION BY COLUMNNAME1 ORDER BY COLUMNNAME2)
含义:按COLUMNAME1指定的字段进行分组排序,或者说按字段COLUMNNAME1的值进行分组排序。
3.
解决实际问题:(实现统计功能中常用)
1)问题描述:比如查询记录有5行,每行记录有一个数值型的字段。第2行为第1、2行的和;第3行为第1、2、3行的和;第4行为第1、2、3、4行的和;后面依此类推……
2)解决办法:使用ORACLE自带的OVER函数。
如下例子:
1.建测试表EMP
– CREATE TABLE
CREATE TABLE EMPLOYEE
(
DEPTNO NUMBER(4),
ENAME VARCHAR2(20),
SAL NUMBER(10)
);
2.插入测试数据
INSERT INTO EMPLOYEE (DEPTNO,ENAME,SAL) VALUES (0001,’CLARK’,2450);
INSERT INTO EMPLOYEE (DEPTNO,ENAME,SAL) VALUES (0002,’SMITH’,3000);
INSERT INTO EMPLOYEE (DEPTNO,ENAME,SAL) VALUES (0003,’ALLEN’,1250);
INSERT INTO EMPLOYEE (DEPTNO,ENAME,SAL) VALUES (0004,’JAMES’,950);
查询结果如下:

3.编写SQL(用Over函数)
select deptno,
sal,
sum(sal) over (order by deptno) AccSal
from employee
查询结果如下:

ORACLE逐行累计求和方法(OVER函数)的更多相关文章
- Oracle逐行累加求和
最近遇到一个比较常见的问题,每行记录需要累加求和.这些问题倒不是有多难,主要是在工作的过程中会经常遇到,特别是Oracle自带的一些函数也能够很好地解决这样一些通用的查询计算,在此记录一下. 问题描述 ...
- oracle累计求和
//将当前行某列的值与前面所有行的此列值相加,即累计求和: //方法一: with t as( select 1 val from dual union all select 3 ...
- SQL集合运算参考及案例(一):列值分组累计求和
概述 目前企业应用系统使用的大多数据库都是关系型数据库,关系数据库依赖的理论就是针对集合运算的关系代数.关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式.不过我们在工作中发现,很多人 ...
- oracle的分析函数over 及开窗函数
转:http://www.2cto.com/database/201310/249722.html oracle的分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开 ...
- Oracle 中的 TO_DATE 和 TO_CHAR 函数
Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...
- 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...
- .Net程序员学用Oracle系列(7):视图、函数、过程、包
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程? 麦苗答:方法有多种,可以使用DBMS_MET ...
- Oracle经常用到的一些函数
1.数字函数 NVL( string1, replace_with) :如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ...
随机推荐
- Android ListView实现新闻客户端的新闻内容图文混排
布局文件: <LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/andro ...
- Chromebook 阿里云ECS 配置 jupyter Notebook
前言 新购入一台Chromebook Pixel ,为方便机器学习编程,用学生版的阿里云ECS搭建了jupyter Notebook 为减少下次踩坑,参考链接记录如下: 参考链接 阿里云使用笔记(一) ...
- 基于Vue的WebApp项目开发(六)
实现商品购买列表页面 步骤一:新建goodslist.vue文件 <template> <div id="tml"> <!--利用mui中的图文表格组 ...
- Monkey测试环境搭建
一.JAVA环境的搭建 1.安装jdk-7u60-windows-x64(JAVA1.7.0,也可安装最新版的JAVA1.8.0),默认安装路径C盘: 2.JAVA环境变量的搭建: 我的电脑→右键属性 ...
- 压力测试Jmeter+badboy
压力测试Jmeter+badboy 前言:很多人都想学习压力测试,但是一开始手动写脚本着实蛋疼,所以今天我教大家的是利用badboy来录制压测脚本,然后用Jmeter来做压力测试. 流程:badboy ...
- 瞥了一眼js
JS打开超链接的几种形式1.window.open(''url'') 2.用自定义函数<script>function openWin(tag,obj){obj.target=" ...
- Python学习---Django的request扩展[获取用户设备信息]
关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...
- [EffectiveC++]item41:了解隐式接口和编译期多态
- 深入剖析php执行原理(2):函数的编译
本文只探讨纯粹的函数,并不包含方法.对于方法,会放到类.对象中一起研究. 想讲清楚在zend vm中,函数如何被正确的编译成op指令.如何发生参数传递.如何模拟调用栈.如何切换作用域等等,的确是一个很 ...
- 面向对象的JavaScript --- 多态
面向对象的JavaScript --- 多态 多态 "多态"一词源于希腊文 polymorphism,拆开来看是poly(复数)+ morph(形态)+ism,从字面上我们可以理解 ...