sql - SQL:如何在同一个团队中选择两个employeeid并且team_score大于400?提到了下面的表架构
问题描述
Previous_teams
- id(整数)
- 名称(文字)
- team_score(真实)
团队成员
- team_id(整数)
- 员工 ID(整数)
- 员工姓名(文本)
- 生日(文字)
- 人气(真实)
问:我如何选择在至少 5 个之前的团队中工作过且(平均)team_score 大于 400 的一对员工 ID 以及他们一起工作的团队的数量。还要避免任何重复。示例:需要采用 (1,2) 的 team_id 对,而不是 (2,1)
解决方案
这基本上是一个自加入,通过一些聚合来计算满足条件的团队:
select tm1.employee_id, tm2.employee_id
from team_members tm1 inner join
team_members tm2
on tm1.team_id = tm2.team_id and
tm1.employee_id < tm2.employee_id join
previous_teams pt
on tm1.team_id = pt.team_id
where pt.team_score > 400
group by tm1.employee_id, tm2.employee_id
having count(*) >= 5;
推荐阅读
- macos - 如何在macos中安装elasticsearch5.6?
- python - 詹金斯:使用win32通过python发送邮件
- node.js - Nodejs Promise.all 不累加结果
- objective-c - Mac OS - 如何以编程方式检测 Mac 用户(登录用户)是使用 Objective-C 的管理员?
- python - 从 django 中的外键获取数据
- android - Android 11 上的 SoundPool 问题
- mysql - 当值随每一行变化时,计算有多少行具有指定值
- java - CompletableFuture 中的异步模式方法在下一阶段仅在完成前一阶段后才开始时有什么用?
- javafx - 无法在预加载器中将阶段设置为透明
- sql - 将每天的日期限制为下午 2:30