使用MySQL获取大于0或小于0的总和

时间:2017-06-21 12:52:01

标签: mysql database

我有一个MySQL查询,它将获取我的列中的金额总和。我发现的是我的数据中也存在负值。我想将正值和负值之和分开。你能帮我解决这个问题吗?

我尝试了这个查询...但它给了我无效使用群组功能

这是我的疑问:

SELECT sum(AMOUNT) from deposit where type = 42 and sum(AMOUNT) > 0 

5 个答案:

答案 0 :(得分:1)

每当您对聚合有条件时,请使用having

SELECT sum(AMOUNT) from deposit where type = 42 having sum(AMOUNT) > 0 

或者,如果您只想对正值进行求和,那么请不要将条件放在总和上,而是单独计算:

SELECT sum(AMOUNT) from deposit where type = 42 and amount > 0

答案 1 :(得分:1)

使用

SELECT sum(AMOUNT) from deposit where type = 42 and amount > 0 having sum(AMOUNT) > 0 

答案 2 :(得分:1)

我找到了之前由某人发布的解决方案,但不幸的是他删除了它(我不知道为什么)感谢那个人。 :)

我试着考虑了Having子句,但它给了我一个错误的结果。

SELECT sum(CASE WHEN AMOUNT > 0 THEN AMOUNT ELSE 0 END) as Positive, 
sum(CASE WHEN AMOUNT < 0 THEN AMOUNT ELSE 0 END) as Negative from deposit where type = 42

答案 3 :(得分:0)

您还可以使用子选择:

SELECT s FROM (
   SELECT SUM(amount) s FROM deposit WHERE type = 42
) R
WHERE s > 0;

另请参阅:https://en.wikipedia.org/wiki/Having_(SQL)

答案 4 :(得分:0)

对于这种情况,我们在mysql中有具有的聚合函数。

1)如果你想要大于零;

SELECT sum(AMOUNT) from deposit where type = 42 having sum(AMOUNT) > 0 

2)如果你想要小于零;

SELECT sum(AMOUNT) from deposit where type = 42 having sum(AMOUNT) < 0 

如果您想在一个结果中同时使用子查询

相关问题