如何编写SQL查询获取团队ADMIN数量及多管理员团队总数?
没问题,我来帮你搞定这两个SQL需求~
第一步:获取每个团队的ADMIN数量
要拿到每个团队的ADMIN人数,我们可以通过过滤ADMIN角色 + 按团队分组统计来实现,SQL代码如下:
SELECT team_id, COUNT(*) AS admin_count FROM team_member WHERE role = 'ADMIN' GROUP BY team_id;
针对你给出的示例数据,这个查询的结果会是:
| team_id | admin_count |
|---|---|
| 1 | 1 |
| 2 | 2 |
第二步:统计拥有多名ADMIN的团队总数
在第一步的基础上,我们只需要筛选出ADMIN数量大于1的团队,再统计这些团队的数量就行。这里用子查询来封装第一步的结果,逻辑更清晰:
SELECT COUNT(*) AS multi_admin_team_count FROM ( SELECT team_id, COUNT(*) AS admin_count FROM team_member WHERE role = 'ADMIN' GROUP BY team_id ) AS team_admin_summary WHERE admin_count > 1;
用你的示例数据跑这个查询,会返回1——因为只有team_id为2的团队满足“多名ADMIN”的条件。
小补充
如果你的业务里“多名”的定义不是≥2而是其他(比如≥3),只需要把外层查询的admin_count > 1改成对应的条件就好啦。
内容的提问来源于stack exchange,提问作者codeepic
相关产品推荐
相关产品推荐

