如何在两个表之间执行JOIN后计算不同部门的成员数量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在两个表之间执行JOIN后计算不同部门的成员数量?相关的知识,希望对你有一定的参考价值。

我有一张桌子Emp和另一张桌子Dept

这是表Emp

enter image description here

这是表部门

enter image description here

我必须执行的查询是显示超过5个工作人员的所有部门(即DeptName)的平均工资(即sal)。因此,我们必须做一个JOIN或其他东西,并在这里与DeptID匹配DeptID等。

这真的令人困惑,我不明白该怎么做。

答案

你可以使用group by with having子句查询。

Dept_id分组和使用having子句检查计数。

SELECT
  SUM(E.Sal) / COUNT(E.Dept_id) AS Avg_Sal,
  E.Dept_Id
FROM EMP E
JOIN Dept D
  ON D.DeptId = E.Dept_Id
GROUP BY E.DeptId
HAVING COUNT(E.Dept_Id) > 5
另一答案
Select 
DeptName,
AVG(sal) as averageSalary,
Count(EmpId) as NumberofEE
FROM Emp e
/*Left Join Because there are Nulls in the Dept_Id each Emp should belong to 
1 dept*/
LEFT JOIN Dept d on e.Dept_Id = d.DeptId

GROUP BY 
DeptName

Having Count(EmpId)> 5

这将为您提供超过5个工作人员的所有部门(即DeptName)的平均工资(即sal)

如果我对你的要求是正确的。

以上是关于如何在两个表之间执行JOIN后计算不同部门的成员数量?的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统如何实现垮库join

SQL Join与子查询计算不同表中具有相同ID的记录数

如何改进键表和另一个表之间的这种 JOIN 操作

部门冲突改怎么解决比较好?

Mysql Join Query需要很长时间才能执行

如何计算成员数,使用别名在分组表中输出结果?