一种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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值