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

---创建测试表

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);

一、实现累加

SELECT
T.*,
SUM(T.QUALITY) OVER (PARTITION BY T.PARENT_ID ORDER BY T.PART_ID) RUNNING_QUALITY
FROM
TEST T

二、实现累减

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

三、实现累乘

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

四、实现累除

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

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

最新文章

  1. Oracle 多行转多列,列值转为列名
  2. jquery总结06-动画事件03-淡入淡出效果
  3. ansible写一个简单的playbook
  4. UVALive 5010 Go Deeper 2sat
  5. SourceTree工具进行提交合并代码步骤
  6. scala调用java的方法,返回了一个对象链表List<Student>,在scala中遍历该链表获取指定Student的名字name
  7. android手机连接PC无法正常安装驱动
  8. Android开发-API指南-<intent-filter>
  9. sql server UI怎么设置自增加id?
  10. Java设计模式系列之状态模式
  11. 解读BOM与COM
  12. linux 文本编辑器 vim 基本操作
  13. 怎样在WIN7系统下安装IIS和配置ASP(详细)
  14. Android NDK开发(1)----- Java与C互相调用实例详解
  15. python学习笔记 loop&&raw_input 7&& if
  16. 有关BOM头的一些知识
  17. [Android] Android RxJava2+Retrofit2+OkHttp3 的使用(一) --基础篇 Retrofit2 的使用
  18. wcf在post请求时,关于string类型参数传入中文的处理
  19. 注意C语言 / 要想得到精确结果
  20. CentOS6.8合并DVD1和DVD2作为本地yum源

热门文章

  1. BZOJ.1568.[JSOI2008]Blue Mary开公司(李超线段树)
  2. 查看mysql数据库体积
  3. svn提交后 添加注释
  4. redis:list列表类型的操作
  5. JS自学笔记02
  6. 基于spring boot 2.x的websocket示例
  7. 近期 Unity 提交苹果审核被拒的问题
  8. 在Mac平台上安装配置ELK时的一些总结
  9. 初识Vulkan【转】
  10. androidstudio全局搜索快捷键Ctrl+Shift+F失效的解决办法