请问有没有办法实现这样的分组,当v连续>=某个值a时,保留该连续期间最大值的第一行记录?

请教下这个有没有办法实现,当v连续>=某个值a时,保留该连续期间最大值的第一行记录;如果连续>=a的记录行数为1,则也保留该行记录。

表内容示例,比如当a为0.3时,希望结果是保留箭头所指记录。

attachments-2021-11-kb08fxqn61a390ccb3fbd.png

请先 登录 后评论

2 个回答

Yating Xie

跟序列相关的分组可以使用segment函数。上述分组可以像这样实现:

//模拟输入数据
t = table(1..12 as rows ,take(2021.09.29, 12)as date, [0, 0,0.3,0.3,0, 0.5,0.3,0.5,0,0,0.3,0] as v)

//实现分组
minV = 0.3
select * from t context by segment(v>=minV) having v= max(v) and v>=minV limit 1


输入-> 输出如下:

attachments-2021-11-hWsh59dD61a392db08e6d.png

请先 登录 后评论
sunle shen
t = table(1..10000 as rows ,take(2021.09.29, 10000)as date, rand(100, 10000) as v)
mid = select max(v), imax(v) from t group by segment(v>=minV)
mid = select * from mid where max_v >= minV
ret = table(t.rows[mid.segment + mid.imax_v] as rows, t.date[mid.segment] as date, mid.max_v as max_v)
请先 登录 后评论