postgresql - 将所有行的前一行结果相乘
问题描述
如何动态乘以前一行的结果:
row A col_3 = if (row A col_1 <= 1 then 1), else (1 * col_2)
row B col_3 = if (row B col_1 <= 1 then 1), else (row A * col_2)
row C col_3 = if (row C col_1 <= 1 then 1), else (row B * col_2)
我已经在 Postgres 中尝试过这个。这里是
sum (
case
when col_1 <= 1 then 1
else (lag(col_3) over (...)) * col_2 <-- I'm aware you cannot use a lag function within a sum/window function
end
) over (order by ...) as col_3
注意:我在这里问了一个类似的问题(感谢@Bergi!),但我不确定如何为此目的实现该答案。
编辑:
逻辑:
if (previous_interval is null) previous_interval = 1
if (curr_repetition = 1) interval = 1
else if (curr_repetition = 2) interval = 6
else interval = previous_interval * easiness
解决方案
推荐阅读
- ibm-watson - 下载适用于 Microsoft Windows 64 位的 IBM Watson Studio 桌面试用版时出现问题
- php - 使用 PHP 在浏览器上运行 composer
- python - Python Selenium 脚本...使用 XPATH 获取文本
- google-apps-script - Google 表单上的动态相关下拉菜单
- javascript - 我想用 POST Data 打开一个新窗口/选项卡,但它不起作用
- swift - 静态 UITableViewCell 的自动高度调整不起作用
- pyspark - 在 pyspark 数据帧的 dtypes 中计数不同
- angular - 更改检测后角度子组件未更新
- multithreading - 如何避免多个for循环并减少时间?
- angular - 在 Angular 8.1.2 版中绑定到子组件的属性