如果达到特定条件,则计数重置为 0
Count reset to 0 if reached a certain condition
下面的例子演示了这种情况:
示例数据如下:
以下是输出期望(注意'entity'列中有超过1个实体):
- is_hit定义为变量a <=4
- variable_a定义为过去几天的总点击数达到3
我要做的是标记实体是否有累计命中总数达到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'
.
下面的例子演示了这种情况:
示例数据如下:
以下是输出期望(注意'entity'列中有超过1个实体):
- is_hit定义为变量a <=4
- variable_a定义为过去几天的总点击数达到3
我要做的是标记实体是否有累计命中总数达到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'
.