假设我有以下示例输入表:
| ID | Code |
|------|------|
| 1234 | 121A |
| 1234 | 334B |
| 1234 | 543A |
| 1112 | 121A |
| 1112 | 333B |
| 2234 | 121A |
| 2234 | 301B |
| 3314 | 121A |
我想创建一个名为“Count”的新列。当且仅当整个表中的唯一 ID 满足以下条件时,“计数”列才获得 1 值:
请注意,如果唯一 ID 具有 121A 以及上面列出的两个代码之一和另一个代码(不是这两个代码),那么也可以。
否则 ID 的“计数”值为 0。
鉴于上述规则,我想要的输出表如下:
身份证 | 代码 |
---|---|
1234 | 1 |
1112 | 1 |
2234 | 0 |
3314 | 0 |
我知道如何在 Python 中执行此操作,但不太熟悉 SQL,尤其是 BigQuery SQL。如何使用 BigQuery SQL 编写此查询?
看起来您需要条件聚合,例如:
SELECT
ID,
CASE WHEN COUNT(CASE WHEN Code = '121A' THEN 1 END) = 1
AND COUNT(CASE WHEN Code IN ('333B', '334B ') THEN 1 END) = 1
THEN 1
ELSE 0 END AS Code
FROM YourTable
GROUP BY
ID;
上面的代码要求该组满足每个条件一次,而不是更多。如果这不是您的意图,请说清楚。