首页 > 解决方案 > SQL:分组和计数,但前提是所有记录都大于阈值

问题描述

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

表:

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

阈值 = 400 所以结果应该是:

user_id | count
------------------
0       | 2
2       | 1

我会感谢你的帮助!

标签: sql

解决方案


您可以group by使用having

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;

推荐阅读