sql - 将值乘以先前计算的值
问题描述
我正在研究一个预测模型,并且在 sql 中随着时间的推移自动化趋势。我要做的是将每一行乘以先前导出的数字,然后将下一行乘以计算出的前一行。这是一个基本的可视化;
date num_reqs cumulative_value cumulative value formula
2019-10-01 246.4 276 num_reqs * 1.12
2019-10-02 246.4 309 previous cum_value * 1.12
2019-10-03 246.4 346 previous cum_value * 1.12
2019-10-04 246.4 388 previous cum_value * 1.12
2019-10-05 246.4 435 previous cum_value * 1.12
我尝试了 lag() 的一些变体,但我认为 lag 不允许累积。我也尝试过 exp() 但它不适用于我的价值观。
解决方案
您可以使用求幂来执行此操作。我想你想要:
select t.*,
numreqs * power(1.12, row_number() over (order by date)) as cumulative_value
from t
推荐阅读
- php - Graph API:通过驱动器项目ID发送带有附件的邮件?
- r - ggbetweenstats中的点颜色
- angular - 根据日期值更改Angular 6 / HTML5中的表格行颜色
- typescript - TypeScript 3 中的项目引用,带有单独的 `outDir`
- python - Python:如何用格式化的跨度标签替换跨度标签并通过漂亮的汤返回结果页面
- c# - 附加事件处理程序只调用一次
- reactjs - Dockerfile 是如何设置的?
- github - Probot 7.2 版没有启动我的应用程序
- node.js - 我们如何使用 aws x-ray 跟踪 axios http 请求?
- javascript - 在数组Javascript AngularJS中访问对象的属性