You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Games表和Teams表计算各球队总观众数(主场+客场)

计算每支球队的总观众数(主场+客场)

嘿,我来帮你搞定这个需求!要算出每支球队的总观众数,核心就是把球队作为主场时的所有观众数加起来,再加上作为客场时的所有观众数,最后合并到一起。

假设表结构

先默认你的表结构大概是这样的(如果实际字段名有差异,你可以对应调整):

  • Teams 表:包含球队唯一标识 team_id 和球队名称 team_name
  • Games 表:包含比赛ID game_id、主场球队ID home_team_id、客场球队ID away_team_id,以及单场观众数 attendance

实现SQL查询

下面这个SQL语句可以完美实现你的需求:

SELECT 
    t.team_name,
    COALESCE(SUM(g.total_attendance), 0) AS total_attendance
FROM Teams t
LEFT JOIN (
    -- 统计每支球队的主场总观众数
    SELECT home_team_id AS team_id, SUM(attendance) AS total_attendance
    FROM Games
    GROUP BY home_team_id
    UNION ALL
    -- 统计每支球队的客场总观众数
    SELECT away_team_id AS team_id, SUM(attendance) AS total_attendance
    FROM Games
    GROUP BY away_team_id
) g ON t.team_id = g.team_id
GROUP BY t.team_id, t.team_name
ORDER BY total_attendance DESC;

代码解释

  • 子查询里用 UNION ALL 分别统计主场和客场的观众数:这样每支球队如果既打过主场又打过客场,会生成两条记录(一条主场总和,一条客场总和)
  • 用 LEFT JOIN 关联 Teams 表:确保即使某支球队还没打过任何比赛(既没主场也没客场),也能在结果里显示,并且用 COALESCE 把NULL值转换成0,避免出现空值
  • 最后外层按球队分组求和:把主场和客场的总和加起来,得到最终的总观众数

对应你的示例

比如你提到的:

  • 球队A的总观众数是 12+12+3+8:说明A作为主场有两场比赛(观众12、12),作为客场有两场比赛(观众3、8),这个SQL会自动把这两部分加起来得到总和
  • 球队B的总观众数是 12+15+3:说明B作为主场有两场(12、15),客场有一场(3),同样会被正确计算

内容的提问来源于stack exchange,提问作者lehtojy1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:12:45