首页 > 解决方案 > SQL:如何在同一个团队中选择两个employeeid并且team_score大于400?提到了下面的表架构

问题描述

Previous_teams

团队成员

问:我如何选择在至少 5 个之前的团队中工作过且(平均)team_score 大于 400 的一对员工 ID 以及他们一起工作的团队的数量。还要避免任何重复。示例:需要采用 (1,2) 的 team_id 对,而不是 (2,1)

标签: sqlsqlite

解决方案


这基本上是一个自加入,通过一些聚合来计算满足条件的团队:

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;

推荐阅读