博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】PostgreSQL 实现阶乘方法列举
阅读量:5935 次
发布时间:2019-06-19

本文共 1695 字,大约阅读时间需要 5 分钟。

PostgreSQL 功能庞大,对实现乘法这类运算有诸多的方法,今天我来简单列举下以下几种便捷的途径。

比如我们要计算10!

1、 可以用SQL给它展开:

t_girl=# select 1*2*3*4*5*6*7*8*9*10 as multiply_10;     multiply_10 ------------    3628800(1 row)Time: 0.854 ms

2、 用WITH递归

t_girl=# with recursive g(m,n) as t_girl-# (select 1 m, 10 nt_girl(# union allt_girl(# select m*n, (n-1) n from g where n > 1t_girl(# )t_girl-# select max(m) as factorial_10 from g; factorial_10 --------------      3628800(1 row)Time: 3.893 ms

3、 用简单的函数来展开

create or replace function func_get_factorial(f_number int)  returns bigint as $ytt$  declare i int :=1;  declare v_result bigint := 1;begin  for i in 1 .. f_number loop    v_result := v_result * i;  end loop;  return v_result;end;$ytt$ language plpgsql;t_girl=# select func_get_factorial(10) as factorial_10; factorial_10 --------------      3628800(1 row)Time: 1.022 ms

4、 用游标和序列函数generate_series来展开

create or replace function func_get_factorial2(f_number int)  returns bigint as $ytt$  declare cs1 cursor for select n from generate_series(1,f_number,1) as g(n);  declare v_result bigint := 1;  declare v_n bigint := 0;begin    open cs1;    loop        fetch cs1 into v_n;        exit when not found;v_result := v_result * v_n;    end loop;    close cs1;  return v_result;end;$ytt$ language plpgsql;t_girl=# select func_get_factorial2(10) factorial_10; factorial_10 --------------      3628800(1 row)Time: 2.238 mst_girl=#

5、 用自定义python函数

create or replace function func_get_factorial_py(f_number int)  returns bigint as $ytt$m = 1n = 1for i in range(1,f_number+1):    m = m * in = mreturn n$ytt$ language plpythonu;t_girl=# select func_get_factorial_py(10) factorial_10; factorial_10 --------------      3628800(1 row)Time: 1.060 ms

转载地址:http://mkctx.baihongyu.com/

你可能感兴趣的文章
运营商的“大网”怎么建? 三大运营商纷纷SDN/NFV三步走
查看>>
通辽智慧城市建设总体规划和顶层设计专家评审会召开
查看>>
未来营销闯关标配:大数据+智能硬件
查看>>
互动性可视化,打通大数据最后一公里
查看>>
为什么媒体如此惧怕 Facebook?
查看>>
我眼中的性能测试工程师
查看>>
台积电与ARM合作开发7纳米芯片 或用于iPhone 8
查看>>
大数据窥探:关于大数据的15条干货思考
查看>>
随谈10年的技术生涯和技术成长
查看>>
《交互式程序设计 第2版》一1.1 本书读者对象
查看>>
各省光伏十三五规划汇总:总规模将超130GW
查看>>
《大数据时代》作者:当下数据隐私保护方式是完全错误的
查看>>
光伏亟待资本注入 业界呼吁第三方“风险评级”
查看>>
2016年网络安全的五大发展趋势
查看>>
郑州成立中原大数据产业联盟
查看>>
MySQL命令行导出数据库
查看>>
“想哭”之余的追问 IEEE数名专家多角度剖析勒索病毒事件
查看>>
Mozilla计划让Firefox浏览器支持WebKit前缀网站
查看>>
VR 的负面效应有那些?其实专家们也不太清楚
查看>>
《实施Cisco统一通信管理器(CIPT2)》一1.9 参考
查看>>