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

MySQL单表多条件聚合统计美式橄榄球比赛数据问题

MySQL多场景聚合计算美式橄榄球比赛YAC指标方案

你可以通过嵌套CASE WHEN语句在单次聚合中实现多场景的YAC计算,同时保留所有统计指标输出在同一张结果表中,参考实现代码如下:

SELECT 
    possession_team AS Team, 
    ball_carrier_receiver AS Player,
    -- 总推进码数 对应原过滤规则统计
    SUM(CASE WHEN run_pass='P' AND pass_result <> 'S' AND pass_result <> 'R' THEN gain ELSE 0 END) AS YDS,
    -- 总BIA统计
    SUM(CASE WHEN run_pass='P' AND pass_result <> 'S' AND pass_result <> 'R' THEN bia ELSE 0 END) AS `TOT BIA`,
    -- 分场景计算总YAC
    SUM(
        CASE
            -- 仅统计有效完成传球
            WHEN run_pass='P' AND pass_result = 'C' AND pass_result <> 'S' AND pass_result <> 'R' THEN
                CASE
                    -- 达阵且端区内接球场景,可按需调整计算规则
                    WHEN series_end = 'Touchdown' AND bia > gain THEN bia - (gain - bia)
                    -- 普通完成传球场景沿用原公式
                    ELSE gain - bia
                END
            ELSE 0
        END
    ) AS `TOT YAC`
FROM plays
-- 若需同时统计冲球等其他类型进攻数据,无需加WHERE过滤,所有过滤逻辑放在CASE WHEN中即可
GROUP BY possession_team, ball_carrier_receiver;

逻辑说明

  • 把原来写在WHERE里的过滤规则迁移到每个聚合函数的CASE WHEN中,避免因为过滤条件导致其他类型的进攻数据丢失,方便你在同一条SQL中扩展30余项其他统计指标。
  • YAC的计算通过两层CASE WHEN实现:第一层先判断是否为有效完成传球,第二层再区分普通完成传球、达阵端区内接球两类场景分别计算单条记录的YAC贡献,最终求和得到总YAC。你可以根据实际的规则调整达阵场景的计算逻辑即可匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:42:01