如果达到特定条件,则计数重置为 0

Count reset to 0 if reached a certain condition

下面的例子演示了这种情况:

示例数据如下:

以下是输出期望(注意'entity'列中有超过1个实体):

我要做的是标记实体是否有累计命中总数达到3。一旦实体被标记,命中计数应该再次重置为0。 按照这个逻辑,看看6月4日和6月9日标记的实体A上面的演示。

目前,我的问题是将 is_tagged 逻辑应用于查询。在 SQL 中有没有办法做到这一点?

如果我没理解错的话,你想要row_number():

select t.*,
       (case when is_tagged and
                  mod(row_number() over (partition by entity, is_tagged
                                         order by date
                                        ),
                       3) = 0
             then true
        end)
from t;

注意:这假定您的列是布尔值。如果它们是字符串,则使用 'true'.