如何在BigQuery中拆分字符串生成重复行并统计平台游戏数量
解决方案:拆分多平台列并统计各平台游戏数量
针对你遇到的问题,核心是要把包含多个平台的字段拆分成单独行,再对每个平台的游戏数求和。结合你使用的BigQuery语法,正确的查询语句如下:
SELECT TRIM(platform_item) AS Platform, SUM(Number_of_Games) AS Number_of_Games FROM `VideoGames`, UNNEST(SPLIT(Platform, "/")) AS platform_item GROUP BY Platform ORDER BY Number_of_Games DESC
语句说明:
SPLIT(Platform, "/"):把原表中用"/"分隔的平台字符串拆分成数组,比如"PS3/Xbox 360"会变成["PS3", "Xbox 360"]UNNEST(...) AS platform_item:把数组展开成独立的行,每个平台对应一行,原行的Number_of_Games会跟着每个拆分出的平台行保留TRIM(platform_item):去除平台名称前后的空格,避免像" Nintendo Switch"(带前置空格)和"Nintendo Switch"被识别为两个不同平台SUM(Number_of_Games):对每个平台的游戏数求和,比如原表中Wii U/ Nintendo Switch的3个游戏,会分别加到Wii U和Nintendo Switch的统计结果里
为什么之前的尝试没成功:
- 用
SPLIT(...)[offset(0)]只会取拆分后的第一个平台,无法获取后续的平台值 - 手动创建平台临时表再关联的方式逻辑错误,应该先拆分原表的多平台字段,再进行统计,而不是尝试匹配整串平台名称
执行上述语句后,就能得到你期望的统计结果:
| Platform | Number_of_Games |
|---|---|
| Nintendo Switch | 7 |
| Xbox 360 | 2 |
| Wii U | 3 |
| PS3 | 1 |
| PS4 | 1 |
| Windows | 1 |
内容的提问来源于stack exchange,提问作者mlooch97
相关产品推荐
相关产品推荐

