需要计算运行总量



我有如下数据,我需要在某种程度上生成运行总数,但不是真的。当值从绿色变为黄色或红色时,则所有行为1,直到它再次从绿色变为红色或黄色,然后所有行为2,直到它发生变化。

我想我可以使用lag函数来检查前一行与当前行,但不确定如何得到这个输出。

0 003

这是一个缺口和岛屿的变体。假设您有一个列来排序记录,例如id,我们可以用lagsum窗口来识别转换:

select id, val,
sum(case when lag_val = 'Green' and val != 'Green' then 1 else 0 end) 
over(order by id) grp
from (
select t.*, lag(val, 1, val) over(order by id) lag_val
from mytable t
) t
order by id
grp0003

最新更新