我有一个下表,其中第
result
列中包含预期输出
id col1 col2 col3 result
1 10 30 2 30
2 15 10 8 28
3 25 10 5 25
4 20 25 9 25
5 30 15 4 30
result
=max(col1, col2, (previous_row's) result - (previous row's) col3)
例如:对于第一行,其为
max(10, 30)=30
,对于第二行,其为 max(15,10,30-2)=28
可以使用
sql
在 partition
中有效地完成此操作吗?
我已经找到了完成这部分的方法:((previous_row's) result - (previous row's) col3)
,但由于涉及 max
函数使用前一行的值作为输入的复杂性而卡住了。
更新: 我使用下面的sql来获取
((previous_row's) result - (previous row's) col3)
FIRST_VALUE(max(col1, col2)) over (order by id)
-IFNULL(sum(col3) over (order by id ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING),0))