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
我想要如下所述的结果输出:
- 我想看看id_1在多种颜色上重复了多少次,并将颜色数量作为一个桶。
- 我不是在寻找 'Color' 名称,而是在寻找 颜色数
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
.
我对 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
我想要如下所述的结果输出:
- 我想看看id_1在多种颜色上重复了多少次,并将颜色数量作为一个桶。
- 我不是在寻找 'Color' 名称,而是在寻找 颜色数
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
.