按值对行进行分组,直到更改为止分组包括第一个更改的值

问题描述

我有以下数据集:

enter image description here

这些行按start_time字段按升序排序,我想对具有一系列假值的行进行分组,直到第一个真值包括一个真值为止。

>

也就是说,对于上述数据集,我需要以下输出

enter image description here

(分组字段可以包含我编写的值以外的其他值)

解决方法

我认为加和可以满足您的要求

select t.*,1 + coalesce(sum(case when bool = true then 1 else 0 end) over(
            order by start_time
            rows between unbounded preceding and 1 preceding
        ),0) as grp
from mytable t
,

使用Vertica,您将使用Vertica的可爱import math def area(a,b=0): y = math.pi *a*b x = math.pi *a**2 return x,y def main(): print("First",area(7)) print("Second",area(5,4)) main() 函数编写一个更好的可读查询,该函数是一个分析函数,在每个CONDITIONAL_TRUE_EVENT()表达式处均以0开头,每次布尔表达式时均以1递增是真的。

每次间隔超过1天或上一行在PARTITION BY以及当前行时,都需要增加。所以:

TRUE