如何在实时变换的分组内计算累积最小值?

我有一个表如下图所示:

attachments-2023-03-lYdIksKy63feee7884f3a.jpg我想以 AP 列的价格变动作为分组标记,计算组内 BV 列的累积最小值,应该如何写脚本?

请先 登录 后评论

2 个回答

Polly

里用 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);

请先 登录 后评论
OliviaH

有三种方法可以实现,具体代码如下:

// 模拟数据
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);

单次运行耗时结果:

attachments-2024-02-zgLa9Hew65bb6cea15fb0.png



请先 登录 后评论
  • 2 关注
  • 0 收藏,718 浏览
  • 提出于 2023-03-01 14:22

相似问题