【问题标题】:MySQL SUM a column IF with a conditionMySQL SUM 带有条件的列 IF
【发布时间】:2021-10-24 23:17:24
【问题描述】:

我有两列,gain 和 bia。我可以使用以下代码得到一个总和和我的计算。

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

但我还需要对另一列满足条件的 bia 列进行另一次计算 (series_end='Touchdown')。但我想在不更改下面的原始 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 then 0 end”的情况,因为我需要 bia 列的真实总和(值的范围可以从 -5 到 50)。

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

【问题讨论】:

  • SUM(bia * (series_end='Touchdown')) AS 'BIA TD'
  • 这行得通!不知道如何将其标记为正确答案。
  • 这是常见的、基础的、表达式的、“条件聚合”的缩写形式(搜索和研究)。

标签: mysql sql statistics


【解决方案1】:

据我了解,您要求使用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;

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2015-04-15
    • 1970-01-01
    • 2018-08-19
    • 2019-04-30
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多