Oracle连乘聚合函数 MUL
Oracle提供了求和(SUM),平均值(AVG)等聚合函数,但没有提供连乘的聚合函数。
比如有一个表如下:
| ID | NUM |
| 1 | 4 |
| 2 | 2 |
| 3 | 2 |
如果要求NUM列的连乘数,即求: 4*2*2 ,目前Oracle中没有提供类似函数,但可以通过某种变换来求。
公式为: MUL(num) = EXP(SUM(LN(num)))
数学上推导如下:
设 x = 4 * 2 * 2
ln(x) = ln(4*2*2) => ln(4) + ln(2) + ln(2) => sum(ln(num)
x = e(sum(ln(sum)
x = exp(sum(ln(sum))
有两个地方要注意:
1. ln的参数不能是负数,求值时要转换成正的。
2. 连乘的结果可能比较大,会超出范围。
参考:
http://viralpatel.net/blogs/row-data-multiplication-in-oracle/
http://stackoverflow.com/questions/5416169/mutiplication-aggregate-operator-in-sql
完
Oracle连乘聚合函数 MUL的更多相关文章
- ORACLE字符串分组聚合函数(字符串连接聚合函数)
ORACLE字符串连接分组串聚函数 wmsys.wm_concat SQL代码: select grp, wmsys.wm_concat(str) grp, 'a1' str from dual un ...
- oracle sum()聚合函数
原文链接:https://blog.csdn.net/cizatu5130/article/details/100291347 oracle sum()聚合函数 2016-05-13 20:08:00 ...
- oracle数据库函数之============‘’分析函数和聚合函数‘’
1分析函数 分析函数根据一组行来进行聚合计算,用于计算完成狙击的累积排名等,分析函数为每组记录返回多个行 rank_number() 查询结果按照次序排列,不存在并列和站位的情况,可以用于做Oracl ...
- ORACLE 自定义聚合函数
用户可以自定义聚合函数 ODCIAggregate,定义了四个聚集函数:初始化.迭代.合并和终止. Initialization is accomplished by the ODCIAggrega ...
- oracle 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值
create or replace function MAX_O3_8HOUR_ND(value NUMBER) return NUMBER parallel_enable aggregate usi ...
- oracle 自定义 聚合函数
Oracle自定义聚合函数实现字符串连接的聚合 create or replace type string_sum_obj as object ( --聚合函数的实质就是一个对象 sum ...
- Oracle对索引列同时使用多个聚合函数的性能问题
Oracle某一数据表tkk715(数据量在一千万左右),对一个索引字段做获取最大值与最小值的聚合函数操作,响应时间较长(超过3秒): 将SQL改写为分别取最大.最小的聚合值,IO和响应时间显著下降到 ...
- Oracle 聚合函数
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 此处采用Oracle 11g中其他用户SCOTT中的EMP表,进行演示. –COUNT:统计行数量 COUNT(*)统计的是结果集的 ...
- java:Oracle(聚合函数,多表查询,表之间的关系)
1.聚合函数 --max,min,sum,avg,count,nvl(,) -- max:最大值 -- max既能取数字的最大值,也可以取字符串的最大值(英文字母排列顺序),根据场景实际意义来看,最好 ...
随机推荐
- 【练习】sqlnet.ora
在SQLNET.ora文件中设置以下参数可以实现IP访问限制: $ pwd/u01/app/oracle/product/10.2.0/db_1/network/admin$ vi sqlnet.or ...
- 【测试】自行建表并演示append+nologging,并描述数据写入后产生的效果
①创建表: SQL> create table t4 as select * from all_objects; Table created. ②设置t4处于nologging: SQL> ...
- Java基础——序列化
Java的“对象序列化”能将一个实现了Serialiable接口(标记接口,没有任何方法)的对象转化为一组byte,这样日后要用到这个对象的时候,就能把这些byte数据恢复出来,并据此重新构建那个对象 ...
- Android SharedPreferences 见解
今天突然遇到了SharedPreferences问题,虽然以前用过,但从没有深入的了解一下,今天就顺便深入了解一下,并总结一下,防止以后忘记. SharePreferences是Android平台上一 ...
- SVN与TortoiseSVN实战:冲突详解(一)
硬广:<SVN与TortoiseSVN实战>系列已经写了三篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,第二篇<SVN与TortoiseSVN实战:标签 ...
- 从汇编层面深度剖析C++虚函数
文章出处:http://blog.csdn.net/linyt/article/details/6336762 虚函数是C++语言实现运行时多态的唯一手段,因此掌握C++虚函数也成为C++程序员是否合 ...
- JS 随机数
function GetRandomNum(Min,Max){ var Range = Max - Min; var Rand = Math.random(); return(Min + Math.r ...
- PayPal 开发详解(二):开启【自动返回】和【数据传输】
1.使用我们的商家测试帐号登录 sandbox :http://www.sandbox.paypal.com Business帐号登录 2.登录以后点击:[我的paypal]->[用户信息]-& ...
- javaSE第十七天
第十七天 168 1:登录注册案例(理解) 169 A:用户注册案例的分析 169 B:用户注册案例的源码 170 1: cn.itcast.pojo.User.java ...
- C++ inline(内联什么时候使用)
(1)什么是内联函数?内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内. (2)为什么要引入内联函数?当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题.另外,前面我们讲到 ...