sql - 在 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)
推荐阅读
- android - 为什么即使可见性设置为 VISIBILITY_PRIVATE 或 VISIBILITY_SECRET,我的锁屏上仍会显示通知?
- kubernetes - Kubernetes HPA:无法获取内存利用率:无法获取资源内存的指标:资源指标 API 没有返回指标
- c++ - 在 C++ 中的 char 变量中存储数值?
- gradle - 我的 Gitlab CI/CD 管道在缓存中失败并出现 FATAL:文件不存在错误
- c++ - pybind11 中的编程绑定
- python - 将大量列表转换为数据框的内存问题
- java - CDI / WELD 构造函数注入最佳实践
- c++ - 使用 Treap 数据结构的动态图
- javascript - 如何从 Javascript 中具有不同值的字符串中提取子字符串?
- python - 为什么 vscode 在运行 python 文件之前会更改目录?