假设我们有一个表格,其中包含两列,分别为id和items,如下所示:
| id | items |
|---|---|
| 1 | A,B,C,D |
| 2 | A,B,F,G |
| 3 | B,C,F,G |
| 4 | D,E,F,G |
我们的目标是找到items列的交集。要求使用BigQuery SQL语言。
首先,我们可以使用SPLIT函数将items列拆分为单独的项目。这将返回一个数组,我们可以使用UNNEST函数将其展开为单独的行。
然后,我们可以将结果进行分组并选择那些出现在所有组中的项目。此时,我们可以使用HAVING子句结合COUNT DISTINCT函数来获取交集。
以下是完整的代码示例:
SELECT item, COUNT(DISTINCT id) AS count FROM ( SELECT id, SPLIT(items, ',') AS items FROM table_name ), UNNEST(items) AS item GROUP BY item HAVING count = (SELECT COUNT(DISTINCT id) FROM table_name);
这将返回如下结果:
| item | count |
|---|---|
| B | 3 |
| F | 2 |
| G | 2 |