如何在 Google-Bigquery 中根据条件和条件重置添加自动增量计数器

问题描述

在大查询中使用我的表,但根据条件获取增量字段时出现问题。

基本上每次得分低于 95% 时,它都会在第一周返回 Stage 1。如果它连续第二周低于 95%,它会返回第 2 阶段等等。但是,如果它高于 95%,计数器将重置为“良好”。然后如果低于 95% 等,则返回 Stage 1。

Need it to look like this pic as shown in Ms Excel

解决方法

您可以使用 row_number() -- 但在根据每行 > 95% 的值的计数分配组后:

select t.*,(case when row_number() over (partition by grp order by month,week) = 1
             then 'Good'
             else concat('Stage ',row_number() over (partition by grp order by month,week) - 1)
        end) as level
from (select t.*,countif(score > 0.95) over (order by month,week) as grp
      from t
     ) t;
,

考虑以下

select * except(grp),(case when Average_score >= 95 and 1 = row_number() over grps then 'Good'
    else format('Stage %i',row_number() over grps - sign(grp))
   end) as Level
from (
  select *,countif(Average_score >= 95) over (order by Month,Week) as grp
  from `project.dataset.table`
)
window grps as (partition by grp order by Month,Week)      

如果应用于您问题中的样本数据 - 输出为

enter image description here