[英]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.