如何在Google BigQuery中统计数组中的重复值?
在Google BigQuery中统计数组内元素的重复次数
嘿,这问题很常见,咱们用BigQuery的UNNEST配合分组统计就能轻松搞定。直接给你能用的解决方案,再拆解下逻辑:
完整可用SQL代码
WITH temp AS ( SELECT 1 id, ["a","b", "a"] name ) SELECT id, unnested_name AS name, COUNT(*) AS count FROM temp, UNNEST(name) AS unnested_name GROUP BY id, unnested_name ORDER BY id, count DESC;
执行结果
运行后会得到你期望的输出:
| id | name | count |
|---|---|---|
| 1 | a | 2 |
| 1 | b | 1 |
逻辑拆解
UNNEST(name) AS unnested_name:把数组name里的每个元素拆成单独的行,原本的1行数据会变成3行(对应"a","b","a"三个元素)GROUP BY id, unnested_name:按id和展开后的元素分组,确保每个id下的每个元素单独统计次数COUNT(*) AS count:统计每个分组内的行数,也就是对应元素在原数组里的出现次数- 最后的
ORDER BY是为了让结果更直观,按次数降序排列
如果你的真实数据包含多个id,这个方法同样适用,会自动按每个id分组统计各自数组内的元素重复次数~
内容的提问来源于stack exchange,提问作者L-square
相关产品推荐
相关产品推荐

