BigQuery - 如何查找 1 个或多个类别中唯一重叠值的计数(分类值计数)?

BigQuery - How to find count of Unique overlapping values in 1 or or more categories (Count of categorical values)?

我对 BigQuery 和标准 SQL 还很陌生。我可能无法找出解决问题的正确方法。请帮帮我。

请帮我更改此代码以获得所需的输出。

我有一个颜色列和一个 ID 列。示例如下:

颜色 | ID
蓝色 | id_1
蓝色 | id_5
蓝色 | id_6
蓝色 | id_2
蓝色 | id_7
绿色 | id_1
绿色 | id_2
绿色 | id_3
红色 | id_3
红色 | id_5
红色 | id_2
红色 | id_4
红色 | id_7
黄色 | id_3
黄色 | id_4

我想要如下所述的结果输出:

Reference for input and Expected output/results.

示例输出:

品牌数量 || 1 颜色 :|: 2 种颜色 :|: 3 种颜色 :|: 4 种颜色
唯一 ID 计数 || 1 | 5 | 1 | 0 |

提前感谢您的耐心等待。

我遇到的困难是当然存在重叠,因此 GROUP BY 或 DISTINCT 连续动态填充 1 种颜色、2 种颜色、3 种颜色等。

SELECT id, Color, COUNT(1) number
FROM project.dataset.table
GROUP BY id, Color

我会在单独的而不是列上执行此操作:

select cnt, count(*) as num_colors
from (select id, count(*) as cnt
      from t
      group by id
     ) i
group by cnt
order by cnt

如果你想按列进行,你可以使用条件聚合:

select countif(cnt = 1),
       countif(cnt = 2),
       countif(cnt = 3),
       countif(cnt = 4)
from (select id, count(*) as cnt
      from t
      group by id
     ) i;

注意:这些假定 id/color 行在原始数据中是唯一的。否则,使用 count(distinct color) as cnt.