我正在尝试对数据集做出临时决定。让我用一个简单的表格来解释这个问题:
Time Var1 Var2 Var3 Var4 Var5 Var6 Total
0:00 1.69 3.27 4.80 2.14 0.70 2.14
0:05 2.73 2.73 1.60 1.20 0.46 2.14
0:10 5.45 2.69 4.62 1.15 1.03 4.29 16.28
0:15 2.07 4.74 2.14 1.50 0.43 2.37
0:20 1.71 4.62 1.79 1.29 0.73 2.37
0:25 1.88 3.60 4.00 2.09 0.56 2.25
0:30 5.22 8.57 1.54 2.20 0.48 1.13 14.13
0:35 5.00 5.63 2.93 1.32 1.03 2.05
0:40 4.29 5.29 2.55 1.14 0.38 1.48
我要做的是在同一时间段内对所有变量求和,直到达到 5 或大于 5。一旦达到大于 5,我减去 5 得到余数,然后继续将余数添加到下一个变量在下一个时间段等等。对于第一个总计中显示的结果,路径将是下一个:
Time Var1 Var2 Var3 Var4 Var5 Var6 Total
0:00 1.69 3.27 4.80
0:05 1.20
0:10 1.03 4.29 16.28
我试图找到每个时间段的路径和总数。
如示例所示,我的表格是垂直而不是水平制作的。到目前为止,我已经使用以下方法获得了所有变量的累积加法:
sum(value) over(partition by variable, time order by variable) as cumulative_addition
但我不知道这是否应该是我应该采取的第一步。我还考虑过在查询中组合超前和滞后函数,但是当我尝试增加时间段时遇到问题:
Time Variable Value Cumulative_addition
0:00 Var1 1.69 1.69
0:00 Var2 3.27 4.96
0:00 Var3 4.80 9.76
0:00 Var4 2.14 11.90
0:00 Var5 0.70 12.60
0:00 Var6 2.14 14.74
0:05 Var1 2.73 17.47
0:05 Var2 2.73 20.20
0:05 Var3 1.60 21.80
0:05 Var4 1.20 23.00
所以在 9.76 我应该做 9.76-5=4.76 并跳转到 0:05 并在 var4 中继续添加,直到我再次达到 5。
你认为我可以通过使用窗口函数来解决这个问题吗?
预先感谢您的帮助