SQL:分组并计数,但仅当所有记录均大于阈值时

时间:2019-06-19 14:25:36

标签: sql

我在AWS Redshift中有一个mytableuser_id的{​​{1}}。我需要计算每个用户的记录数,但前提是该用户的所有记录都大于阈值。

mytable:

records

阈值= 400,因此结果应为:

user_id | records
------------------
0       | 678
0       | 567
1       | 845
1       | 123
1       | 420
2       | 789

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可以将group byhaving一起使用:

select user_id, sum(case when records > 400 then 1 else 0 end) as cnt
from t
group by user_id
having min(records) > 400;

或使用::

select user_id, sum( (records > 400)::int ) as cnt
from t
group by user_id
having min(records) > 400;