如何通过SQL筛选排序数据,获取总得分TOP5的进攻型球队?
直接用SQL就能实现,无需额外处理
核心思路是把球队的主场得分、客场得分拆成独立记录合并,再统计总和,最后关联球队表获取名称:
SELECT t.TeamName, SUM(s.TotalTeamScore) AS TotalScore FROM TeamsTable t JOIN ( -- 提取所有球队的主场得分记录 SELECT HomeTeam AS TeamID, HomeTeamScore AS TotalTeamScore FROM GameScoresTable UNION ALL -- 提取所有球队的客场得分记录 SELECT AwayTeam AS TeamID, AwayTeamScore AS TotalTeamScore FROM GameScoresTable ) s ON t.TeamID = s.TeamID GROUP BY t.TeamID, t.TeamName ORDER BY TotalScore DESC LIMIT 5;
代码说明:
UNION ALL:把主场、客场的得分数据合并成一个数据集,每条记录对应某支球队单场比赛的得分(不分主客场)SUM(s.TotalTeamScore):对每支球队的所有得分记录求和,得到总进攻得分GROUP BY:按球队ID和名称分组,确保每个球队只生成一条统计结果ORDER BY TotalScore DESC:按总得分降序排列LIMIT 5:筛选出得分最高的前5支球队
内容的提问来源于stack exchange,提问作者MSG89
相关产品推荐
相关产品推荐

