mysql 累乘_oracle sql语句实现累加、累减、累乘、累除

mysql 累乘_oracle sql语句实现累加、累减、累乘、累除转自 https www cnblogs com sooner p 8043013 html 在 oracle 开发过程中经常会遇到累加 减 乘 除的问题 下面对这个做个小的总结 创建测试表 CREATETABLET PARENT IDNUMBER PART IDNUMBER QUALITYNUMBE INSERTINTOTE 1 1 2 INSERT

转自:https://www.cnblogs.com/sooner/p/8043013.html

在oracle开发过程中经常会遇到累加、减、乘、除的问题。下面对这个做个小的总结

—创建测试表

48304ba5e6f9fe08f3fa1abda7d326ab.png

CREATE TABLE TEST(

PARENT_ID NUMBER,

PART_ID NUMBER,

QUALITY NUMBER);

INSERT INTO TEST VALUES(1,1,2);

INSERT INTO TEST VALUES(1,2,3);

INSERT INTO TEST VALUES(1,3,2);

INSERT INTO TEST VALUES(1,4,5);

INSERT INTO TEST VALUES(2,2,3);

INSERT INTO TEST VALUES(2,3,5);

INSERT INTO TEST VALUES(2,4,7);

48304ba5e6f9fe08f3fa1abda7d326ab.png

一、实现累加

SELECT

T.*,

SUM(T.QUALITY) OVER (PARTITION BY T.PARENT_ID ORDER BY T.PART_ID) RUNNING_QUALITY

FROM

TEST T

517380c6daa93a20ce7190f363553a94.png

二、实现累减

48304ba5e6f9fe08f3fa1abda7d326ab.png

SELECT

T.PARENT_ID,

T.PART_ID,

T.QUALITY,

SUM(DECODE(T.RN,1,T.QUALITY,-T.QUALITY)) OVER(PARTITION BY T.PARENT_ID ORDER BY T.PART_ID) RUNNING_PROD

FROM

(

SELECT

T.*,

ROW_NUMBER() OVER(PARTITION BY T.PARENT_ID ORDER BY T.PART_ID) RN

FROM

TEST T) T

48304ba5e6f9fe08f3fa1abda7d326ab.png

1a807fa3ccc2cbb61d572bed724e0a44.png

三、实现累乘

SELECT

T.*,

ROUND(EXP(SUM(LN(T.QUALITY)) OVER(PARTITION BY T.PARENT_ID ORDER BY T.PART_ID)),0) RUNNING_PROD

FROM

TEST T

e1ce37a99ba7245dc369a85eb1c80f5d.png

四、实现累除

48304ba5e6f9fe08f3fa1abda7d326ab.png

SELECT

T.PARENT_ID,

T.PART_ID,

T.QUALITY,

EXP(SUM(DECODE(RN,1,LN(T.QUALITY),-LN(T.QUALITY))) OVER(PARTITION BY T.PARENT_ID ORDER BY T.PART_ID)) RUNNING_PROD

FROM

(

SELECT

T.*,

ROW_NUMBER() OVER(PARTITION BY T.PARENT_ID ORDER BY T.PART_ID) RN

FROM

TEST T)T

48304ba5e6f9fe08f3fa1abda7d326ab.png

ca11905204f39a879655ab5c3ac4617f.png

累乘和累除的缺陷是不能对负数进行运算 因为ln(负数)没有意义

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215996.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午12:48
下一篇 2026年3月18日 下午12:48


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号