如果组的值为 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
我正在编写一个查询(使用 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