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;