如果组的值为 1,则该组的所有值都应替换为 1 - SQL

Case when value of a group is 1 then all values of that group should be replaced by 1 - SQL

我正在编写一个查询(使用 Athena - AWS),如果另一个值至少出现一次,我需要替换组中的所有值。举个例子:

我的原始数据框

ID   v1 v2 v3
123  0  0  1
123  0  1  0
123  1  1  0
456  1  0  0 
456  0  0  0 

我需要的是:当 v1、v2 或 v3 假定值 1 按 ID 分组时,则包含 1 个按 ID 分组的整个列应为 1。

这是我需要的输出:

ID   v1 v2 v3
123  1  1  1
456  1  0  0 

因为v1、v2、v3在组ID 123中至少有一个数字1,那么这个组的所有这些列都应该是1。但是,ID 456在列v1中至少有一个数字1,那么v1 将为 1,v2、v3 将保持为 0。

有人知道怎么做吗?

您可以尝试以下方法

SELECT
   ID,
   MAX(v1) as v1,
   MAX(v2) as v2,
   MAX(v3) as v3
FROM
   your_table
GROUP BY
   ID