gbqsql:对于a列中的每个唯一值,如果值“x”出现在b列中,则创建值为“y”的新c列,否则为“n”

kd3sttzy  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(254)

我使用的是google大查询标准sql。想知道怎么写这段代码。我有这张table。

A   B
1   20
1   20
1   10
2   20
2   30

对于a列中的每个唯一值,如果b列的值为“10”,则创建一个新的c列,值为“y”,否则为“n”。
结果应该是这样的。

A   B    C
1   20   Y
1   20   Y
1   10   Y
2   20   N
2   30   N

在这个结果中,由于“1”至少有一个“10”的示例,所有行“1”都将在新的列c中分配一个“y”值。

umuewwlo

umuewwlo1#

只是使用 case 和窗口功能:

select t.*,
       (case when countif(b = 10) over (partition by a) > 0 then 'Y' else 'N' end) as c
from t;

bigquery完全支持布尔运算,那么为什么要使用它呢 'Y' 以及 'N' ,当您可以使用时:

select t.*,
       (countif(b = 10) over (partition by a) > 0) as c
from t;

相关问题