将值聚合为FALSE,如果任何值包含FALSE,按列分组。

huangapple go评论68阅读模式
英文:

Aggregate values to FALSE if any of the value contains FALSE GROUP BY a column

问题

我得到了以下表格

FFId PId PDId Emp Operating
885 3022 816 1090A true
871 3022 816 1090A false
839 7465 7196 989A true
839 7465 7196 1094A true
782 3994 4290 1176A true
796 3994 4290 1176A false

我想将"Operating"值聚合为false,当具有相同的PId、PDId、Emp时,无论是true还是false。

所以期望的结果将是

FFId PId PDId Emp Operating New Operating
885 3022 816 1090A true false
871 3022 816 1090A false false
839 7465 7196 989A true true
839 7465 7196 1094A true true
782 3994 4290 1176A true false
796 3994 4290 1176A false false

请问您能帮助我生成SQL查询吗?谢谢!

英文:

I got the following table

FFId PId PDId Emp Operating
885 3022 816 1090A true
871 3022 816 1090A false
839 7465 7196 989A true
839 7465 7196 1094A true
782 3994 4290 1176A true
796 3994 4290 1176A false

And I would like to aggregate the Operating value into false when there are either true or false with the same PId, PDId, Emp

So the expected result would be

FFId PId PDId Emp Operating New Operating
885 3022 816 1090A true false
871 3022 816 1090A false false
839 7465 7196 989A true true
839 7465 7196 1094A true true
782 3994 4290 1176A true false
796 3994 4290 1176A false false

Could you please help me here to generate SQL query. Thanks!

答案1

得分: 2

考虑以下(BgQuery标准SQL)

select *, 
  logical_and(Operating) over(partition by PId, PDId, Emp) as New_Operating
from your_table

如果应用于您问题中的示例数据 - 输出是:

将值聚合为FALSE,如果任何值包含FALSE,按列分组。

英文:

Consider below (BgQuery Standard SQL)

select *, 
  logical_and(Operating) over(partition by PId, PDId, Emp) as New_Operating
from your_table    

if applied to sample data in your question - output is

将值聚合为FALSE,如果任何值包含FALSE,按列分组。

huangapple
  • 本文由 发表于 2023年7月10日 13:26:59
  • 转载请务必保留本文链接:https://go.coder-hub.com/76650849.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定