我有一个MySQL查询,它将获取我的列中的金额总和。我发现的是我的数据中也存在负值。我想将正值和负值之和分开。你能帮我解决这个问题吗?
我尝试了这个查询...但它给了我无效使用群组功能。
这是我的疑问:
SELECT sum(AMOUNT) from deposit where type = 42 and sum(AMOUNT) > 0
答案 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;
答案 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
如果您想在一个结果中同时使用子查询。