【发布时间】:2021-05-02 23:05:34
【问题描述】:
我有两张桌子
员工: 员工编号 员工姓名 工资 divison_id
部门: 部门ID 部门名称
如何显示部门 ID、部门名称、在每个员工人数最多的部门工作的员工人数。
我想要这样的结果:
division_id division_name total_employee
Z-100 | finance | 3
【问题讨论】:
我有两张桌子
员工: 员工编号 员工姓名 工资 divison_id
部门: 部门ID 部门名称
如何显示部门 ID、部门名称、在每个员工人数最多的部门工作的员工人数。
我想要这样的结果:
division_id division_name total_employee
Z-100 | finance | 3
【问题讨论】:
SELECT *
FROM (SELECT e.division_id,
d.division_name,
Count(1) total_employee
FROM employee e
JOIN division d
ON e.division_id = d.division_id
GROUP BY e.division_id
ORDER BY Count(1) DESC)a
LIMIT 1
【讨论】:
如果您想要拥有最多员工的所有部门,您应该考虑一个以上的部门可以拥有它。所以我正在修改我的答案,而不是 top 我使用 Rank() 和 CTE 来获得员工人数最多的所有部门。
with DivisionWithMostEmployee as
(
select Rank()over(order by count(*) desc) RowNumber, d.division_id, d.division_name, count(*) TotalEmployee
from division d, employee e where d.division_id=e.division_id
group by d.division_id,d.division_name
)
select Division_id,Division_name,TotalEmployee from DivisionWithMostEmployee where RowNumber=1
【讨论】: