里用 deltas 计算 BV 列相邻价格的差值,并结合 cumsum 函数统计组内的累积的情况。上述需求可以通过以下脚本实现:
select *, cummin(BV) from T context by cumsum(0!=deltas(AP));
或者通过函数 segment 将连续的相同值划分为一组:
select *, cummin(BV) as AAA from T context by segment(AP);
有三种方法可以实现,具体代码如下:
// 模拟数据
BV = rand(10, 100000)
AP = rand(100, 100000)
t = table(BV, AP)
// 方法一:segmentby
segmentby(cummin,t.BV, t.AP)
// 方法2: cummin+cumsum+deltas
select cummin(BV) from t context by cumsum(0!=deltas(AP));
// 方法三:cummin+segment
select cummin(BV) as AAA from t context by segment(AP);
单次运行耗时结果: