Sql 查找每个组中特定行之后的所有记录

Sql 查找每个组中特定行之后的所有记录,sql,google-bigquery,Sql,Google Bigquery,我需要找出每个组中出现在特定行之后的所有记录,即 源表: 现在我的要求是在橙色之后找到每组中的所有项目 预期产出: 尝试使用累积最大值: 尝试使用累积最大值: 下面考虑一下 select * from `project.dataset.table` where true qualify countif(item='orange') over(partition by category order by ts) > if(item = 'orange', 1, 0) 注意:您必须有一些列

我需要找出每个组中出现在特定行之后的所有记录,即

源表:

现在我的要求是在橙色之后找到每组中的所有项目

预期产出:

尝试使用累积最大值:

尝试使用累积最大值:

下面考虑一下

select *
from `project.dataset.table`
where true
qualify countif(item='orange') over(partition by category order by ts) > if(item = 'orange', 1, 0) 
注意:您必须有一些列定义购买顺序-例如时间戳、日期等。在上面的示例中,它是ts字段

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

下面考虑一下

select *
from `project.dataset.table`
where true
qualify countif(item='orange') over(partition by category order by ts) > if(item = 'orange', 1, 0) 
注意:您必须有一些列定义购买顺序-例如时间戳、日期等。在上面的示例中,它是ts字段

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


谢谢它真的帮助了我,我还有一个时间戳字段。我在想一个场景,如果上面示例中的“橙色”不存在于其中一个组中,那么在这种情况下,我需要该组中的所有记录。可能我还需要附加一个条件,如“按采购分类超额支付的合格CountiItem='orange'”>ifitem='orange',1,0或CountiItem='orange'按类别超额支付的资格”=0。谢谢!!它真的帮助了我,我还有一个时间戳字段。我在想一个场景,如果上面示例中的“橙色”不存在于其中一个组中,那么在这种情况下,我需要该组中的所有记录。在这种情况下,我可能需要附加一个条件,如Quality CountiItem='orange'按类别超额分配按采购>ifitem='orange',1,0或CountiItem='orange'按类别超额分配=0。