[英]SQL SUM only when each value within a group is greater than 0
Here is a sample data set: 这是一个示例数据集:
ID Value
1 421
1 532
1 642
2 3413
2 0
2 5323
I want a query that, in this case, only sums ID=1 because all of its values are greater than 0. I cannot use a WHERE
statement that says WHERE Value > 0
because then ID=2 would still return a value. 我想要一个查询,在这种情况下,由于所有值都大于0,因此只求和ID = 1。我不能使用WHERE
语句表示WHERE Value > 0
因为那时ID = 2仍会返回值。 I feel like this may be an instance where I could possibly use a OVER(PARTITION BY...)
statement, but I am not familiar enough to use it creatively. 我觉得这可能是我可以使用OVER(PARTITION BY...)
语句的一个实例,但是我对创建它的用途并不熟悉。
As an aside, I don't simply add a WHERE ID = 1
statement because this needs to cover a much larger data set. 顺便说一句,我不只是添加WHERE ID = 1
语句,因为这需要覆盖更大的数据集。
Just use having
: 只需使用having
:
select id, sum(value)
from t
group by id
having min(value) > 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.