oracle求某个数的阶乘,Oracle SQL实现阶乘的几个方法
Oracle SQL实现阶乘的几个方法
regonly1
2010-06-07 16:24:39
Linux操作系统
第一个:字符串叠加运算法
原理是先将要相乘的数用字符串拼接起来,然后将拼接的逗号替换为乘号,再用dbms_aw.evel_number函数对字符串运算,即可得所求结果:
SQL> select rownum rn, dbms_aw.eval_number(replace(wmsys.wm_concat(rownum)over(order by rownum), ',', '*')) serial_multi
2 from dual connect by rownum <= 12
3 /
RN SERIAL_MULTI
---------- ------------
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 39916800
12 479001600
12 rows selected
第二种:指数运算法。
这个方法在以前的blog中已经举例过。原理上不再做说明了。
SQL> select rownum rn, power(10, sum(log(10, rownum))over(order by rownum)) serial_mul,
2 sum(rownum)over(order by rownum) serial_add
3 from dual connect by rownum <= 12
4 /
RN SERIAL_MUL SERIAL_ADD
---------- ---------- ----------
1 1 1
2 2 3
3 6 6
4 24 10
5 120 15
6 720 21
7 5040 28
8 40320 36
9 362880 45
10 3628800 55
11 39916800 66
12 479001600 78
12 rows selected
第三种:自定义聚集函数法
这个方法与字符串相加是同一个原理。也就是调用oracle的聚集函数接口来实现数字的连乘。这里不再做多说明。需要注意的是,为何Oracle提供了sum却不提供类似连加的连乘法呢?个人估计是连乘法结果太大,Oracle不希望自己来处理这种问题了,只需要对外提供接口让人们自己去实现好了。
oracle求某个数的阶乘,Oracle SQL实现阶乘的几个方法相关推荐
- 求多个数的最大公约数和最小公倍数,用三种方法实现。
题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整数最大公约 ...
- oracle求一行多列最大值,Oracle分组后取某列最大值的行数据
select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...
- c语言中两个数最大公约数怎么求,C语言求两个数中最大公约数
在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下:#include ...
- oracle如何取正负数,ORACLE 统计正负个数sql
ORACLE 统计正负个数sql select ss.*, sum(ss.aa) over (partition by ss.zsid order by ss.zsid) as fu, sum(ss. ...
- oracle错误(一) ORA-各种常见java.sql.SQLException小结
ORA-00904: --invalid column name 无效列名ORA-00942: --table or view does not exist 表或者视图不存在ORA-01400: -- ...
- oracle 生成 sql语句,Oracle使用SQL语句生成日历的实现方法
Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...
- oracle+生成+sql语句,Oracle使用SQL语句生成日历的实现方法
Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...
- oracle sub share pool简介以及 共享sql实现实质。
oracle sub share pool简介以及 共享sql实现实质. 今天是2013-10-21,从上周五到现在已经三天没有研究oracle,感觉少了很多东西.现在开始继续挖掘oracle的内容 ...
- oracle 求A中不存在于B的记录
oracle 求A中不存在于B的记录 select * from a minus select * from b 是求A中不存在于B的记录 select * from a union select ...
最新文章
- unity课设小游戏_Unity制作20个迷你小游戏实例训练视频教程
- POJ 3630 Phone List
- 《数字视频和高清:算法和接口》一第1章 光 栅 图 像
- Asp.net Core认证和授权:JWT认证和授权
- classlink error java,java – EclipseLink:对MappedSuperclass的查询失败
- matlab截图放不下,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
- jQuery EasyUI dialog 居中最简单的办法
- SPFA求最短路——Bellman-Ford算法的优化
- Java语言基础:IPO编程模式
- [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
- 风控建模十:传统建模方法存在的问题探讨及改进方法探索
- 1156 Sexy Primes (20 point(s)) PAT 素数
- KeyError: ‘Worksheet sheet does not exist.‘
- 泛微使用代码关联附件
- 为了结婚领证,我做了个「一键结婚」插件
- Android Remote Views
- Pytest之fixture中的参数传递
- 自定义控件从入门到轻生之---解锁新姿势
- hInstance是什么参数
- matlab 分母有理化,第5章频率特性精讲.ppt