我有一个如下表
我想基于每个seq_group
组中stay
的值在右侧添加一个Item
列。
对于每个项组,seq_group
以0开头,而当seq_group > 8600
设置为上一行seq_group + 1
时,else子句将是上一行seq_group
为设置。
我已经在spark sql中实现了这一点,如下所示。
select
Item,
Stay,
case when Stay > 8600
then lag(seq_group,1) over (partition by Item order by ts) + 1
else lag(seq_group,1) over (partition by Item order by ts)
end as seq_group
from tableA
当前正在获得如下结果
任何解决此问题的指针都将提供真正的帮助
答案 0 :(得分:2)
这可以通过累加来实现。
select Item,
Stay,
sum(case when Stay > 8600 then 1 else 0 end) over(partition by item order by ts) as seq_group
from tableA