SQL 仅当组内的每个值都大于 0 时求和
SQL SUM only when each value within a group is greater than 0
这是一个示例数据集:
ID Value
1 421
1 532
1 642
2 3413
2 0
2 5323
我想要一个查询,在这种情况下,只对 ID=1 求和,因为它的所有值都大于 0。我不能使用 WHERE
语句说 WHERE Value > 0
因为那时 ID =2 仍然是 return 一个值。我觉得这可能是我可以使用 OVER(PARTITION BY...)
语句的一个实例,但我不够熟悉,无法创造性地使用它。
顺便说一句,我不会简单地添加 WHERE ID = 1
语句,因为这需要涵盖更大的数据集。
只需使用having
:
select id, sum(value)
from t
group by id
having min(value) > 0;
这是一个示例数据集:
ID Value
1 421
1 532
1 642
2 3413
2 0
2 5323
我想要一个查询,在这种情况下,只对 ID=1 求和,因为它的所有值都大于 0。我不能使用 WHERE
语句说 WHERE Value > 0
因为那时 ID =2 仍然是 return 一个值。我觉得这可能是我可以使用 OVER(PARTITION BY...)
语句的一个实例,但我不够熟悉,无法创造性地使用它。
顺便说一句,我不会简单地添加 WHERE ID = 1
语句,因为这需要涵盖更大的数据集。
只需使用having
:
select id, sum(value)
from t
group by id
having min(value) > 0;