SQL SUM, только если каждое значение в группе больше 0

Вот пример набора данных:

ID   Value
1   421
1   532
1   642
2   3413
2   0
2   5323

Я хочу запрос, который, в данном случае, только суммы ID=1, потому что все его значения больше 0. Я не могу использовать WHERE утверждение, которое говорит WHERE Value > 0 потому что тогда ID=2 все равно вернет значение. Я чувствую, что это может быть тот случай, когда я мог бы использовать OVER(PARTITION BY...) заявление, но я не достаточно знаком, чтобы использовать его творчески.

Кроме того, я не просто добавляю WHERE ID = 1 заявление, потому что это должно охватывать гораздо больший набор данных.

1 ответ

Решение

Просто используйте having:

select id, sum(value)
from t
group by id
having min(value) > 0;
Другие вопросы по тегам