一种SQL计算行间四则运算的办法

一种SQL计算行间四则运算的办法
数据库的SQL语言只能计算行间的和,为了进行加减乘除四则运算,我们必须找到把其他运算转化为加

法的办法。减法转化为加法的办法比较简单,只要先取要减的数的相反数,然后相加就可以了。
乘法转化为加法我们要利用数学知识,假定a的常用对数是m,10的m次幂就等于a,用公式表示为:10^

(lg(a))=a。两个数ab的积的常用对数等于ab各自常用对数的和,用公式表示为:lg(a*b)=lg(a)+lg(b)

。这样推论
n个数a1,a2...an的连乘积∏(ai)就等于10的m次幂,其中m=∑(lg(ai))。
我们再利用lg(1/a)=-lg(a)同理可以把除法转为加法。
SQL> select sum(a) from(
  2  (select power(10,sum(
  3  case
  4  when v2=1 then log(10,v1)  --乘
  5  when v2=2 then -log(10,v1) --除
  6  end )) a from tm where v2<3)
  7  union all
  8  (select sum(
  9  case
 10  when v2=3 then v1  --加
 11  when v2=4 then -v1 --减
 12  end ) a from tm where v2>=3)
 13  )
 14  ;

    SUM(A)
----------
       -.6

SQL> select * from tm
  2  /

        V1         V2
---------- ----------
         5          2
         2          1
         3          3
         4          4

SQL> select 1/5*2+3-4 from dual;

 1/5*2+3-4
----------
       -.6

 

你可能感兴趣的:(sql,数据库,语言)