Oracle 实现累加(全)

Oracle 逐行累计求和函数 sum() over() 文章目录1 概述2 示例3 扩展3.1 最大值和最小值 1 概述 1. 需求简述:每列 '追加' 所有前列的值 column => new column v1 v1 v2 v1 + v2 v3 v1 + v2 + v3 ... ... vn v1 + v2 + v3 + ... + vn 2. 解决办法 sum(列1) over(orde 阅读详情
 

今天看到论坛中有关于Oracle实现累加功能的问题,为了解决疑问,下面为在Oracle中实现累加的2种方法.

 

============================Question================================

 

SQL> select * from emp;

 

     EMPID EMPNAME                  SALARY     DEPTID
---------- -------------------- ---------- ----------
         1 Xie_Feng                   8000          1
         2 mantisXF                   3000          1
         3 Roger                      6000          1
         4 Tony                       2500          1
         5 Ning                       3800          1
         6 Sandip                     7000          2
         7 Akanksha                   5500          2
         8 Subhash                    4800          2

 

8 rows selected

 

SQL> select * from dept;

 

    DEPTID DEPTNAME
---------- --------------------
         1 DWH
         2 BODI

SQL>

 

请问如何实现salary工资的累加?谢谢.

 

=========================Resolution_1=====================================

 

Analysis: 用SUM分析函数实现

 

 

如果需要按照Dept部门分组的话:

 

SQL> SELECT D.DEPTID,
  2         D.DEPTNAME,
  3         SUM(E.SALARY) OVER(PARTITION BY D.DEPTID ORDER BY D.DEPTID, E.EMPID) AS ACCUMULATE_SALARY_GROUP_DEPT
  4    FROM EMP E, DEPT D
  5   WHERE E.DEPTID = D.DEPTID;

 

    DEPTID DEPTNAME             ACCUMULATE_SALARY_GROUP_DEPT
---------- -------------------- ----------------------------
         1 DWH                                          8000
         1 DWH                                         11000
         1 DWH                                         17000
         1 DWH                                         19500
         1 DWH                                         23300
         2 BODI                                         7000
         2 BODI                                        12500
         2 BODI                                        17300

 

8 rows selected


 

如果不需要按照Dept部门分组的话, 也就是直接累加所有的Salary工资:

 

SQL> SELECT E.EMPID,
  2         E.EMPNAME,
  3         E.DEPTID,
  4         SUM(E.SALARY) OVER(ORDER BY E.EMPID) AS ACCUMULATE_SALARY_GROUP_DEPT
  5    FROM EMP E;

 

     EMPID EMPNAME                  DEPTID ACCUMULATE_SALARY_GROUP_DEPT
---------- -------------------- ---------- ----------------------------
         1 Xie_Feng                      1                         8000
         2 mantisXF                      1                        11000
         3 Roger                         1                        17000
         4 Tony                          1                        19500
         5 Ning                          1                        23300
         6 Sandip                        2                        30300
         7 Akanksha                      2                        35800
         8 Subhash                       2                        40600

 

8 rows selected

 

=========================Resolution_2=====================================

 

Analysis: 用SUM+GROUP BY实现

 

 

一样,如果需要按照Dept部门分组的话:

 

SQL> SELECT E1.EMPID, E1.EMPNAME, E2.DEPTID, SUM(E2.SALARY)
  2    FROM EMP E1, EMP E2
  3   WHERE E1.DEPTID = E2.DEPTID
  4     AND E1.EMPID >= E2.EMPID
  5   GROUP BY E1.EMPID, E1.EMPNAME, E2.DEPTID;

 

     EMPID EMPNAME                  DEPTID SUM(E2.SALARY)
---------- -------------------- ---------- --------------
         1 Xie_Feng                      1           8000
         2 mantisXF                      1          11000
         3 Roger                         1          17000
         4 Tony                          1          19500
         5 Ning                          1          23300
         6 Sandip                        2           7000
         7 Akanksha                      2          12500
         8 Subhash                       2          17300

 

8 rows selected


 

一样同上,如果不需要按照Dept部门分组的话, 也就是直接累加所有的Salary工资:

 

SQL> SELECT E1.EMPID, E1.EMPNAME, SUM(E2.SALARY)
  2    FROM EMP E1, EMP E2
  3   WHERE E1.EMPID >= E2.EMPID
  4   GROUP BY E1.EMPID, E1.EMPNAME;

 

     EMPID EMPNAME              SUM(E2.SALARY)
---------- -------------------- --------------
         1 Xie_Feng                       8000
         2 mantisXF                      11000
         3 Roger                         17000
         4 Tony                          19500
         5 Ning                          23300
         6 Sandip                        30300
         7 Akanksha                      35800
         8 Subhash                       40600

 

8 rows selected

 

Summary: 总共两种实现方法,单从效率来说如果你的表数据很多的话,用SUM分析函数的方式更好一些.当然这也不是绝对的.

 

Hope it will helpful for your issues! Thanks.

 

 

oracle实现阶梯式累加 利用oracle特有的方法实现oracle实现阶梯式累加 立即下载

相关推荐

IOS APP上架被拒 4.3(a) - Design - Spam,成功

成功解决IOS APP上架被拒 4.3(a) - Design - Spam,本篇博客记录了详细过程

qq_40147106的博客 6912

Oracle12C | 累计求和

Oracle12C 中按照指定条件进行累计求和汇总

FSYML 2557

STM32实战:5分钟搞定MXL90614红外测温模块的I2C驱动(附完整代码)

本文提供了一份快速集成MLX90614红外测温模块的STM32实战指南。通过详细的软件I2C驱动代码,重点解析了SMBus通信协议、CRC校验及温度数据转换,帮助开发者避开常见陷阱,实现5分钟内完成模块驱动并读取准确温度值。

wasm7browser的博客 353

oracle累加重复列,Oracle 累加和实现

Oracle 累加和实现============================Question================================SQL> select * from emp;EMPID EMPNAME SALARY DEPTID---------- -------------------- ---------- ---...

weixin_42146888的博客 521

无人机避障——卡内基梅隆大学(CMU)CERLAB 无人机自主框架复现

CMUCERLAB无人机自主框架是一个模块化的无人机自主导航系统,包含感知、测绘、规划和控制等组件。安装过程中遇到的主要问题包括:(1)cv_bridge路径未正确识别,需手动指定路径;(2)OpenCV版本冲突(4.2与4.6),导致动态导航节点崩溃。解决方案包括:完全卸载OpenCV4.2,重新编译安装OpenCV4.6,并修改相关CMakeLists文件指定版本。最终成功运行仿真环境,实现无人机在Gazebo和RViz中的自主避障导航功能。

weixin_45390670的博客 1647

从零到一:ArduPilot无人船PID调参实战指南

本文详细介绍了ArduPilot无人船PID调参的实战指南,从基础参数设定到高级调参技术,帮助用户掌握水面环境下的PID控制逻辑。通过案例分析和参数示例,解决无人船在空载、负载变化及不同水域环境中的航行问题,提升无人船的稳定性和精确度。

weixin_29266647的博客 507

oracle 逐行累加

ORACLE数据库进行行计算

weixin_40650317的博客 1036

【Halcon-2D测量】add_metrology_object_rectangle2_measure 函数功能(用于向2D计量模型中添加旋转矩形(rectangle2类型)计量对象)

HALCON算子add_metrology_object_rectangle2_measure解析摘要 该算子是HALCON 2D计量模块的核心算子,用于添加旋转矩形计量对象并配置测量参数。主要功能包括:定义旋转矩形几何轮廓(中心坐标、主轴角度、长短半长);生成垂直于矩形边界的测量区域;设置边缘提取预处理参数(高斯平滑、振幅阈值)。关键注意事项:MeasureLength1必须小于矩形长短半长;角度参数Phi需使用弧度单位;多线程需同步模型句柄。该算子适用于方形螺母、PCB板边框等矩形零件的精密测量,需与a

weixin_45590420的博客 1225

oracle编程累加,Oracle 实现累加(全)

今天看到论坛中有关于Oracle实现累加功能的问题,为了解决疑问,下面为在Oracle中实现累加的2种方法.============================Question================================SQL> select * from emp;EMPID EMPNAME SALARY DEPTID----...

weixin_28858247的博客 1667

180.在 Vue3 中使用 OpenLayers 实现多个多边形的绘制、编辑、删除与清空

【摘要】本文介绍如何在Vue3+TypeScript环境下使用OpenLayers实现多边形地图交互功能。通过Composition API封装核心逻辑,实现了多边形绘制、编辑、删除及清空等操作。关键技术包括:使用VectorLayer管理图形数据,Draw/Modify/Select交互控制,以及通过ref()管理交互状态。文中提供了完整代码示例,并解决了交互对象叠加问题,为开发GIS应用提供了基础模块。该方案支持扩展为数据库存储、后端交互等高级功能。

小彭的博客 770

ESD防护设计宝典(十九):元器件选型宝典——共模电感

然而,这位“大师”的脾气也颇为古怪,若设计者不解其性、用之不当,它非但不能抑制噪声,反而会引入信号完整性恶化、电源压降等新问题,甚至让您的系统EMC性能“雪上加霜”,导致项目在测试阶段功亏一篑。本文将带您深入共模电感的内在世界,从本质解析到参数详解,从设计陷阱到实战选型,全方位领悟其平衡艺术,掌握其应用核心,规避那些足以让项目翻车的致命陷阱。:这是存在于电路板内部的“家贼”。共模电感实质上是一个四端器件,它通过磁场的“加法”与“减法”运算,巧妙地实现了对共模噪声的抑制,同时为差模信号大开绿灯。

m0_56451176的博客 421

oracle两个列累加,Oracle-累加功能,累加百分比

例子: 数据表中最后一列就是累加的效果(1)累加sql:select t.acc_pedal_pos,count(*) num,sum(count(*)) over(order by t.acc_pedal_pos) accu_sum from GT1117CARDATA t where t.acc_pedal_pos>0 group by t.acc_pedal_pos order b...

weixin_42360788的博客 1799

Python APP反爬实战:Frida+Charles抓包,破解签名校验

Charles抓包定位参数 → jadx-gui反编译找函数 → Frida Hook拿密钥/规则 → Python还原签名算法;Frida的核心价值:Hook住APP的加密函数,拿到“输入(密钥/参数)+输出(签名)”,无需懂复杂的逆向底层;严格对齐APP的参数排序、拼接规则、加密算法,差一点都会验证失败。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1538

oracle用sum函数实现累加

嘿嘿,虽然写了很多次,但是真正的明白会用还是需要时间阿 。。 下面来一起看看论坛里的一个oracle方面的问题: ====================Question=========================jmbdat    dayt    y       mon       27-9月 -07 2033.2 2007 200709     28-9月 -07 275

枫$叶的专栏 9231

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

oracle sql语句实现累加、累减、累乘、累除

<br />在oracle开发过程中经常会遇到累加、减、乘、除的问题。<br />下面对这个做个小的总结<br /><br />--创建测试表<br />create table aspen(parent_id number,part_id number,qnty number);<br />insert into aspen values(1,1,2);<br />insert into aspen values(1,2,3);<br />insert into aspen values(1,3,2);<

zhuomingwang的专栏 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

oracle 连续累加,oracle 累加功能,累加百分比

标签:最近做数据分析,需要用到累加功能,发现强大的oracle还真有,用over(order by field)例子:数据表中最后一列就是累加的效果累加sql:select t.acc_pedal_pos,count(*) num,sum(count(*)) over(order by t.acc_pedal_pos) accu_sum from GT1117CARDATA t where t....

weixin_42509105的博客 407

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

oracle/postgresql 按天或按分钟进行累加统计

前言 基于项目实际应用,SQL没什么难度,主要是记录一下,方便以后复用 应用场景 一张日志表,记录数据量、状态、时间等信息;一张累加表,按天进行统计,只统计当天的数据量和状态。 日志表 数据示例 累加表 数据示例 升级版累加表,按分钟统计,用于昨日同期对比,其实表结构是完全一样的 数据示例: 统计SQL-Oracle 1)按天统计 MERGE INTO ACCESS_MONITOR_ADDUP addup USING ( SELECT s...

sxz787899的博客 2747

Oracle 时间累加、减

Oracle时间累加、减 -- 作用 日-1, 数据库的时间是字符串,所以我进行了转化 打印出的格式是 2018-08-25 select to_char(to_date(MAX(STAT_DATE) -1, 'yyyymmdd hh'),'yyyy-mm-dd ') as lastUpdateTime from TP_SHOP_OPERATION where STAT_DATE = '201...

技术刘的博客 1306

oracle统计比例,oracle实现累加,累计百分比计算

这几天一直在搞报表,发现Oracle真的很强大,需要用到累加功能,发现强大的oracle还真有,用over(order by field)解决的例子: 数据表中最后一列就是累加的效果累加sql:select substr(hn.fd_sjsxsj_time,1,7) 日期,sum(hn.fd_sh_workload) 工作量,sum(sum(hn.fd_sh_workload)) over(ord...

weixin_39658759的博客 1472

oracle 连续累加,Oracle 累加和实现

Oracle 累加和实现============================Question================================SQL> select * from emp;EMPID EMPNAME SALARY DEPTID---------- -------------------- ---------- ---...

weixin_39653764的博客 806

oracle 多列 累加,oracle 累加功能,累加百分比

最近做数据分析,需要用到累加功能,发现强大的oracle还真有,用over(order by field)例子:数据表中最后一列就是累加的效果累加sql:select t.acc_pedal_pos,count(*) num,sum(count(*)) over(order by t.acc_pedal_pos) accu_sum from GT1117CARDATA t where t.acc...

weixin_42502643的博客 874

oracle实现每日的累平均,oracle sql语句实现累加、累减、累乘、累除

转自:https://www.cnblogs.com/sooner/p/8043013.html在oracle开发过程中经常会遇到累加、减、乘、除的问题。下面对这个做个小的总结---创建测试表 CREATE TABLE TEST(PARENT_ID NUMBER,PART_ID NUMBER,QUALITY NUMBER);INSERT INTO TEST VALUES(1,1,2);INSERT...

weixin_42569329的博客 915

oracle中怎么用累计,oracle实现累加,累计百分比计算

最近做数据分析,需要用到累加功能,发现强大的oracle还真有,用over(order by field)例子: 数据表中最后一列就是累加的效果累加sql:select t.acc_pedal_pos,count(*) num,sum(count(*)) over(order by t.acc_pedal_pos) accu_sum from GT1117CARDATA t where t.acc...

weixin_32098457的博客 1112

Oracle over()分析函数实现累加

Oracle  over()分析函数实现累加

java_bird 2938

oracle中累乘函数,oracle sql语句实现累加、累减、累乘、累除

在oracle开发过程中经常会遇到累加、减、乘、除的问题。下面对这个做个小的总结--创建测试表create table aspen(parent_id number,part_id number,qnty number);insert into aspen values(1,1,2);insert into aspen values(1,2,3);insert into aspen values(...

weixin_32770423的博客 1371
上一篇: ORACLE SQL性能优化系列
下一篇: Oracle集合类型输出参数的PL/SQL存储过程及其Java调用
mantisXF
博客等级 码龄21年 196粉丝 22原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值