首页 > 解决方案 > MySQL SUM 带有条件的列 IF

问题描述

我有两列,增益和偏差。我可以使用以下代码得到一个总和和我的计算。

sum(gain) - sum(bia) AS 'TOT YAC',

但我还需要对另一列满足条件(series_end='Touchdown')的 bia 列进行另一次计算。但是我想在不更改下面的原始 SELECT 语句的情况下做到这一点。

SELECT possession_team AS Team, ball_carrier_receiver AS Player,

FROM plays WHERE run_pass='P' AND pass_result <>'S' AND pass_result <>'R'
GROUP BY possession_team, ball_carrier_receiver;

这就是我卡住的地方。从逻辑上讲,它会像下面这样,但我似乎无法在 MySQL 代码中使用任何东西。它不能是“当 else 1 然后 0 结束时的情况”,因为我需要 bia 列的真实总和(值的范围可以从 -5 到 50)。

sum(bia if series_end='Touchdown') AS 'BIA TD',

标签: mysqlsqlstatistics

解决方案


据我了解,您问您需要使用CASE声明

SELECT possession_team Team, ball_carrier_receiver Player,
SUM(gain) - SUM(bia) 'TOT YAC',
SUM(bia CASE WHEN series_end = 'Touchdown' THEN 1 ELSE 0 END) 'BIA TD',
FROM plays 
WHERE run_pass = 'P' 
AND pass_result NOT IN ('S', 'R')
GROUP BY possession_team, ball_carrier_receiver;

推荐阅读