BigQuery SQL:按唯一 ID 分组时有条件地计算列值(如果列表中仅存在一个代码)

问题描述 投票:0回答:1

假设我有以下示例输入表:

身份证 代码
1234 323F
1234 327F
1234 328F
1234 333F
2234 327F
2234 342F
3314 327F
3314 357F

我想创建一个名为“Count”的新列。当且仅当在整个表中唯一 ID 仅具有以下列表中的以下代码(在“代码”列中)中的一个时,“计数”列才获得 1 值:

  • 323F、327F、328F、333F、357F

否则 ID 的“计数”值为 0。

鉴于上述规则,我想要的输出表如下:

身份证
1234 0
2234 1
3314 0

如何使用 BigQuery SQL 执行此操作?

sql group-by google-bigquery count conditional-statements
1个回答
0
投票

使用以下方法

select ID, 
  (
    select if(count(*) = 1, 1, 0)
    from unnest(Codes) as code
    join unnest(['323F', '327F', '328F', '333F', '357F']) as code
    using(code)
  ) as `count`
from (
  select ID, array_agg(distinct Code) Codes
  from your_table
  group by ID
)

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

© www.soinside.com 2019 - 2024. All rights reserved.