SQL模式匹配与数据处理:统计世界杯数据集球员进球数
SQL进球计数实现方案
核心逻辑
统计Event列中的进球数可以用字符串长度差法:每个进球对应Event字符串里1个开头的G字符,用原字符串长度减去把所有G删除后的字符串长度,得到的差值就是单场比赛该球员的进球数,再用SUM聚合所有场次的进球数即可。
适配你现有框架的完整查询(MySQL语法)
SET @player = 'Lionel Messi'; SELECT Player, SUM(LENGTH(Event) - LENGTH(REPLACE(Event, 'G', ''))) AS Goals_Count FROM WorldCupPlayers WHERE Player = @player AND Event IS NOT NULL -- 过滤无事件记录的行,避免空值导致计算错误 GROUP BY Player ORDER BY Goals_Count DESC;
如果需要统计所有球员的进球排名,删除WHERE里的球员过滤条件即可:
SELECT Player, SUM(LENGTH(Event) - LENGTH(REPLACE(Event, 'G', ''))) AS Goals_Count FROM WorldCupPlayers WHERE Event IS NOT NULL GROUP BY Player ORDER BY Goals_Count DESC;
注意事项
如果要避免把其他含G的事件(比如乌龙球标注等)误算为进球,可以调整替换逻辑为匹配G[数字]'的格式,针对当前FIFA WorldCupPlayers数据集的事件标注规范,直接统计G的数量已经可以得到准确的进球统计结果。
内容的提问来源于stack exchange,提问作者Bob_Bobb
相关产品推荐
相关产品推荐

