繁体   English   中英

SQL - 如何将带有条件的值添加到选择中?

[英]SQL - how to add a value with a condition to a selection?

我有以下表结构:

姓名 价值 成功
名称 1 10 0
名称 2 20 0
名称 2 30 1

我的查询是:

SELECT name, SUM(value) as valueTotal FROM TableName GROUP BY name

结果是:

姓名 总价值
名称 1 10
名称 2 50

现在我想添加一个新列,它将仅包含成功行的总和。 但是如果我添加这个条件,它将适用于所有选定的字段:

SELECT name, SUM(value) as valueTotal, SUM(value) as successValueTotal FROM TableName WHERE success = 1 GROUP BY name

这是我想要得到的结果:

姓名 总价值 成功值总计
名称 1 10 0
名称 2 50 30

如何添加具有不影响主查询的单独条件的字段? 谢谢)

您可以将SUM函数与成功是否为 1 的条件聚合一起使用。 success为1时,取value字段的值,否则为0。

SELECT name, 
       SUM(value)                     AS valueTotal,
       SUM(IF(success = 1, value, 0)) AS successValueTotal
FROM TableName 
GROUP BY name

在这里试试。

这是CASE WHEN的典型用例:

SELECT name, 
SUM(value) AS valueTotal,
SUM(CASE WHEN success = 1 THEN value ELSE 0 END) AS successValueTotal
FROM TableName 
GROUP BY name

您也可以(如柠檬所示)在 MYSQL 中使用 if 子句。 这有点短,但是当CASE WHEN可以时,查询不适用于每个数据库。 所以我认为两者都很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM