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 ...
随机推荐
- 新手,再来1个 vue2入门的教程,有源码参考
在这之前有入门的,作者写的不错的, 照着来一下,也收益颇多,上个例子是基于 "dependencies": { "vue": "^2.2.6&qu ...
- androidcookie存储sqllite
/**声明一些数据库操作的常量*/ private static SQLiteDatabase mDatabase = null; private static final String DATA ...
- 数据迁移:MSSQL脚本文件过大,客户端没有足够的内存继续执行程序
在CMD窗口(俗称:黑屏程序) 下输入 SQLCMD 命令 命令格式如下: sqlcmd -U 用户名 -P 密码 -S 服务器地址 -d 数据库名称 -i 你的脚本文件.sql ( ...
- c# webservice中访问http和https的wsdl,生成的配置节点的不同之处
http: https:
- 京东原来你运用的这玩意,不错,我也要!! ContainerDNS
转自社区 ContainerDNS 本文介绍的 DNS 命名为 ContainerDNS,作为京东商城软件定义数据中心的关键基础服务之一,具有以下特点: 分布式,高可用 自动发现服务域名 后端探活 易 ...
- 沉淀再出发:用python画各种图表
沉淀再出发:用python画各种图表 一.前言 最近需要用python来做一些统计和画图,因此做一些笔记. 二.python画各种图表 2.1.使用turtle来画图 import turtle as ...
- FTP(文件传输协议)工作原理
目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...
- 第一次课堂作业之Circle
1.问题描述: Create a program that asks for the radius of a circle and prints the area of that circle, us ...
- jquery ui tabs(选项卡)插件
参考文档:http://www.css88.com/jquery-ui-api/tabs/ html代码: <div id="tabs"> <ul> < ...
- Id vs Instancetype
我写了一篇 Id vs Instancetype的文章,欢迎访问!