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

技术问询:从不同数据表求和计算冰球池球队每周球员总积分

冰球池队每周总积分计算SQL方案

没问题,我来帮你搞定这个积分计算的逻辑!根据你给出的表结构,需要把滑冰球员和门将的有效积分(Status为True的记录)按队按周汇总,下面是具体的实现思路和SQL代码:

核心思路

  1. 分别统计滑冰球员和门将的每周各队有效积分(只计算Status = True的记录,因为False状态的球员积分应该不计入)
  2. 将两个统计结果合并,按队和周求和得到总积分
  3. 关联PoolTeams表,把队ID对应成队名,让结果更易读

完整SQL代码

假设你还有一张门将统计的表MondayGoalieStats(结构和MondaySkaterStats类似,包含Player、Weeknumber、PoolTeam、PTS、Status字段),可以用以下查询:

SELECT 
    pt.PoolTeamID,
    pt.PoolTeamName,
    COALESCE(s.Weeknumber, g.Weeknumber) AS Weeknumber,
    -- 处理无积分的情况,用0替代NULL避免求和错误
    COALESCE(s.SkaterTotal, 0) + COALESCE(g.GoalieTotal, 0) AS TotalWeeklyPoints
FROM PoolTeams pt
-- 关联滑冰球员的周积分统计
LEFT JOIN (
    SELECT 
        PoolTeam,
        Weeknumber,
        SUM(PTS) AS SkaterTotal
    FROM MondaySkaterStats
    WHERE Status = True
    GROUP BY PoolTeam, Weeknumber
) s ON pt.PoolTeamID = s.PoolTeam
-- 关联门将的周积分统计,同时匹配周数
LEFT JOIN (
    SELECT 
        PoolTeam,
        Weeknumber,
        SUM(PTS) AS GoalieTotal
    FROM MondayGoalieStats
    WHERE Status = True
    GROUP BY PoolTeam, Weeknumber
) g ON pt.PoolTeamID = g.PoolTeam AND s.Weeknumber = g.Weeknumber
-- 按队和周排序,结果更清晰
ORDER BY pt.PoolTeamID, Weeknumber;

代码说明

  • 子查询分别对滑冰球员和门将的数据做分组聚合,只计算有效状态的积分
  • LEFT JOIN保证所有池队都会出现在结果中,哪怕某周没有任何球员获得积分
  • COALESCE函数用来处理NULL值:如果某队某周没有滑冰/门将积分,就用0代替,这样求和时不会出现NULL结果
  • 最终结果会显示每个队的ID、名称、周数和该周的总积分

如果你的门将表结构不同,或者需要调整筛选条件,只需要修改对应的子查询部分就可以啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:44:50