代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Oracle
】
oracle sql语句实现累加、累减、累乘、累除
作者:
/ 发布于
2018/5/9
/
1704
--创建测试表 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(1,3,2); insert into aspen values(1,4,5); insert into aspen values(2,2,3); insert into aspen values(2,3,5); insert into aspen values(2,4,7); --实现累加 select parent_id,part_id,qnty, sum(qnty) over(partition by parent_id order by part_id) running_prod from aspen PARENT_ID PART_ID QNTY RUNNING_PROD ---------- ---------- ---------- ------------ 1 1 2 2 1 2 3 5 1 3 2 7 1 4 5 12 2 2 3 3 2 3 5 8 2 4 7 15 --实现累减 select parent_id,part_id,qnty, sum(decode(rn,1,qnty,-qnty)) over(partition by parent_id order by part_id) running_prod from (select parent_id,part_id,qnty, row_number() over(partition by parent_id order by part_id) rn from aspen) PARENT_ID PART_ID QNTY RUNNING_PROD ---------- ---------- ---------- ------------ 1 1 2 2 1 2 3 -1 1 3 2 -3 1 4 5 -8 2 2 3 3 2 3 5 -2 2 4 7 -9 --实现累乘 select parent_id,part_id, exp(sum(ln(qnty)) over(partition by parent_id order by part_id)) running_prod from aspen PARENT_ID PART_ID RUNNING_PROD --------- ---------- ------------ 1 1 2 1 2 6 1 3 12 1 4 60 2 2 3 2 3 15 2 4 105 --实现累除 select parent_id,part_id, exp(sum(decode(rn,1,ln(qnty),-ln(qnty))) over(partition by parent_id order by part_id)) running_prod from (select parent_id,part_id,qnty, row_number() over(partition by parent_id order by part_id) rn from aspen ) PARENT_ID PART_ID RUNNING_PROD ---------- ---------- ------------ 1 1 2 1 2 .666666667 1 3 .333333333 1 4 .066666667 2 2 3 2 3 .6 2 4 .085714286 累乘和累除的缺陷是不能对负数进行运算 因为ln(负数)没有意义
试试其它关键字
同语言下
.
Oracle字段根据逗号分割查询数据
.
判断字符串是否含有汉字
.
实现多字段匹配一个关键字查询语句
.
查询所有表的所有字段包含指定关键字且替换为指定关键
.
oracle sql语句实现累加、累减、累乘、累除
.
创建只读权限oracle账户
.
update 实现多行多列更新
.
多条数据合并成一条,数据量大,用逗号隔开
.
获取最大日期记录
.
根据时间将一条记录进行分割成多条(开始时间与结束时
可能有用的
.
Oracle字段根据逗号分割查询数据
.
判断字符串是否含有汉字
.
实现多字段匹配一个关键字查询语句
.
查询所有表的所有字段包含指定关键字且替换为指定关键
.
oracle sql语句实现累加、累减、累乘、累除
.
创建只读权限oracle账户
.
update 实现多行多列更新
.
多条数据合并成一条,数据量大,用逗号隔开
.
获取最大日期记录
.
根据时间将一条记录进行分割成多条(开始时间与结束时
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3