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.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整数最大公约 ...

  2. oracle求一行多列最大值,Oracle分组后取某列最大值的行数据

    select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...

  3. c语言中两个数最大公约数怎么求,C语言求两个数中最大公约数

    在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下:#include ...

  4. oracle如何取正负数,ORACLE 统计正负个数sql

    ORACLE 统计正负个数sql select ss.*, sum(ss.aa) over (partition by ss.zsid order by ss.zsid) as fu, sum(ss. ...

  5. oracle错误(一) ORA-各种常见java.sql.SQLException小结

    ORA-00904: --invalid column name 无效列名ORA-00942: --table or view does not exist 表或者视图不存在ORA-01400: -- ...

  6. oracle 生成 sql语句,Oracle使用SQL语句生成日历的实现方法

    Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...

  7. oracle+生成+sql语句,Oracle使用SQL语句生成日历的实现方法

    Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...

  8. oracle sub share pool简介以及 共享sql实现实质。

    oracle sub share pool简介以及 共享sql实现实质. 今天是2013-10-21,从上周五到现在已经三天没有研究oracle,感觉少了很多东西.现在开始继续挖掘oracle的内容 ...

  9. oracle 求A中不存在于B的记录

    oracle 求A中不存在于B的记录 select * from a minus select * from b  是求A中不存在于B的记录 select * from a union select ...

最新文章

  1. unity课设小游戏_Unity制作20个迷你小游戏实例训练视频教程
  2. POJ 3630 Phone List
  3. 《数字视频和高清:算法和接口》一第1章 光 栅 图 像
  4. Asp.net Core认证和授权:JWT认证和授权
  5. classlink error java,java – EclipseLink:对MappedSuperclass的查询失败
  6. matlab截图放不下,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
  7. jQuery EasyUI dialog 居中最简单的办法
  8. SPFA求最短路——Bellman-Ford算法的优化
  9. Java语言基础:IPO编程模式
  10. [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
  11. 风控建模十:传统建模方法存在的问题探讨及改进方法探索
  12. 1156 Sexy Primes (20 point(s)) PAT 素数
  13. KeyError: ‘Worksheet sheet does not exist.‘
  14. 泛微使用代码关联附件
  15. 为了结婚领证,我做了个「一键结婚」插件
  16. Android Remote Views
  17. Pytest之fixture中的参数传递
  18. 自定义控件从入门到轻生之---解锁新姿势
  19. hInstance是什么参数
  20. matlab 分母有理化,第5章频率特性精讲.ppt

热门文章

  1. 面试官比较看重简历中的哪些维度,有什么写简历的技巧、建议和总结?
  2. 剑指offer_第20题_包含min函数的栈_Python
  3. 两位院士同时受聘,山东大学再添强援
  4. 【干货】Github标星1.2K,Visual Transformer 最全最新资源,包含期刊、顶会论文
  5. 阿里P9大佬总结必备的算法和工具,被10万算法工程师点赞
  6. 我是村里唯一的PM,哈哈哈…
  7. 第一章、FastDFS简介
  8. Flask的HelloWorld程序
  9. DRF工程搭建、环境安装与配置
  10. 美多商城之购物车(购物车管理3)