甲骨文可以逆电源

时间:2019-02-07 12:02:34

标签: sql oracle function math plsql

很抱歉,如果这个问题早已发布,我已经看过但没有发现任何东西。我不知道我要做什么的数学术语,这也许就是为什么我没有找到它的原因。

我希望得到75%的结果,我有一张表,例如1500行,我需要知道将这些行设置为什么值,以便所有这些行的乘积或乘方= 75。

通过反复试验,我知道POWER(0.99981,1500) = 0.75199

有没有可以输入75、1500和0.99981作为输出的函数?

我尝试使用LOG,但似乎无法正常工作,或者我使用的方式有误。

3 个答案:

答案 0 :(得分:4)

直接的数学定义是将两个自然对数相除:

SELECT POWER(0.99981,1500),
       LN(.751993891229747972713262500887354361902) / LN(0.99981)
FROM DUAL

您也可以使用LOG()执行此操作。基数是第一个参数:

  log(0.99981, .751993891229747972713262500887354361902)

编辑:

糟糕,要获得基础,您可以使用:

exp(ln(.751993891229747972713262500887354361902) / 1500)

答案 1 :(得分:3)

从数学上讲,数字的第n个根也是1 / n的幂的数字,例如sqrt(x) = power(x, 1/2)

所以您追求的是:

SELECT POWER(POWER(0.99981,1500), 1/1500) res
FROM   dual;

RES
-------
0.99981

答案 2 :(得分:0)

您具有数学方程式:

x 1500 = 0.75

取任意一方的自然对数可得出:

1500 ln(x)= ln(0.75)

可以重新安排为:

ln(x)= ln(0.75)/ 1500

采用双方的指数函数可得出:

e ln(x) = x = e ln(0.75)/ 1500

您可以将其从数学方程式转换为Oracle的SQL,如下所示:

SELECT EXP( LN( 0.75 ) / 1500 ) FROM DUAL;

哪个输出:

|                        EXP(LN(0.75)/1500) |
| ----------------------------------------: |
| .9998082303418508590582823402912385708058 |

db <>提琴here