仅当组中的每个值都大于0时,才使用SQL SUM

Ana*_*Guy 0 sql group-by vertica vsql

这是一个示例数据集:

ID   Value
1   421
1   532
1   642
2   3413
2   0
2   5323
Run Code Online (Sandbox Code Playgroud)

我想要一个查询,在这种情况下,只对ID = 1求和,因为它的所有值都大于0.我不能使用一个WHERE声明,WHERE Value > 0因为那时ID = 2仍然会返回一个值.我觉得这可能是一个我可以使用OVER(PARTITION BY...)声明的实例,但我不够熟悉,不能创造性地使用它.

顺便说一句,我不是简单地添加一个WHERE ID = 1语句,因为这需要覆盖更大的数据集.

Gor*_*off 6

只需使用having:

select id, sum(value)
from t
group by id
having min(value) > 0;
Run Code Online (Sandbox Code Playgroud)