计算 SQL 中的有限和?
Calculating Finite Sum in SQL?
我正在尝试找出一种方法来计算 SQL 中的以下内容:
其中 r 和 W 分别是静态的 (0.2, 0.4)。
x 类似于年龄,并且不会超过 68。
我的数据库有 x、r 和 W 列,其中 x 对于每个观察值都是不同的。
我最初的想法是 while 循环,但我无法构建 while 循环,它的作用类似于:
select * , 0 as n
while n < 68 - (x + 1)
begin
(POWER((1 + r) / (1 + W)) , n)
set n = n + 1
end
from data
希望上面的伪代码说明了我正在尝试实现的内容。
提前致谢!
不需要循环。你的总和(给定 r,w,x)是
(POWER( (1+r)/(1+w), 68-x)-1)/( (1+r)/(1+w) - 1)
除非
(1+r)/(1+w) == 1
在这种情况下总和为 68-x
如果我们写
c = (1+r)/(1+w) and
N = 68-x
然后
(c-1)*Sum{ 0<=n<N | pow(c,n)}
= c*Sum{ 0<=n<N | pow(c,n)} - Sum{ 0<=n<N | pow(c,n)}
= Sum{ 0<=n<N | pow( c, n+1)} - Sum{ 0<=n<N | pow(c,n)}
= Sum{ 1<=n<=N | pow( c, n)} - Sum{ 0<=n<N | pow(c,n)}
= pow( C, N) - 1 (as all the other terms cancel)
我正在尝试找出一种方法来计算 SQL 中的以下内容:
其中 r 和 W 分别是静态的 (0.2, 0.4)。 x 类似于年龄,并且不会超过 68。
我的数据库有 x、r 和 W 列,其中 x 对于每个观察值都是不同的。
我最初的想法是 while 循环,但我无法构建 while 循环,它的作用类似于:
select * , 0 as n
while n < 68 - (x + 1)
begin
(POWER((1 + r) / (1 + W)) , n)
set n = n + 1
end
from data
希望上面的伪代码说明了我正在尝试实现的内容。
提前致谢!
不需要循环。你的总和(给定 r,w,x)是
(POWER( (1+r)/(1+w), 68-x)-1)/( (1+r)/(1+w) - 1)
除非
(1+r)/(1+w) == 1
在这种情况下总和为 68-x
如果我们写
c = (1+r)/(1+w) and
N = 68-x
然后
(c-1)*Sum{ 0<=n<N | pow(c,n)}
= c*Sum{ 0<=n<N | pow(c,n)} - Sum{ 0<=n<N | pow(c,n)}
= Sum{ 0<=n<N | pow( c, n+1)} - Sum{ 0<=n<N | pow(c,n)}
= Sum{ 1<=n<=N | pow( c, n)} - Sum{ 0<=n<N | pow(c,n)}
= pow( C, N) - 1 (as all the other terms cancel)