sql - SQL:分组和计数,但前提是所有记录都大于阈值
问题描述
我mytable
在 AWS Redshift 中有一个user_id
和records
. 我需要计算每个用户的记录数,但前提是该用户的所有记录都大于阈值。
表:
user_id | records
------------------
0 | 678
0 | 567
1 | 845
1 | 123
1 | 420
2 | 789
阈值 = 400 所以结果应该是:
user_id | count
------------------
0 | 2
2 | 1
我会感谢你的帮助!
解决方案
您可以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;
推荐阅读
- reactjs - 如何使用 create-react-app 禁用 eslint 规则?
- python - Python 错误:“NoneType”对象没有使用 Beautiful Soup 的属性“find_all”
- r - 合并和写入过滤数据的问题
- python - 删除 Google Cloud Storage 中的一个非常大的文件夹
- azure - 通过 Web API 控制器读取 Azure AD 组失败,并显示“权限不足,无法完成操作”
- database - 在 Laravel 5.7 中一段时间后从数据库中删除用户
- java - 运行此代码时出现问题,我收到 .class 错误
- node.js - 两台相同型号的笔记本电脑之间的 Angular 编译器速度很慢
- java - JVM 的编译器是否使用“宽”goto?
- powershell - 获取 powershell 脚本的位置,可选择通过符号链接