首页 > 解决方案 > 如何显示每个部门每个职位的员工人数

问题描述

我有两个表,名为EmployeeDepartment

员工(Emp_ID、姓名、职位、部门 ID)

部门(Department_ID、Dept_Name)。

雇员的职位可能是tech_supportdata_entryassistant经理。

我想显示每个部门的名称以及在每个职位上工作的员工人数,以便每个职位显示在单独的列中。

如果部门没有在职人员,则显示数字为零。

样本输出:

Dept_Name         tech_support       data_entry        assistant manager
Accounts               5                 6                 2
Production             2                 4                 2
Sales/Marketing        0                 6                 3

标签: sqlsql-server

解决方案


使用toLEFT JOIN和条件聚合:departmentemployee

select
  d.dept_name,
  sum(case when e.position = 'tech_support' then 1 else 0 end) tech_support,
  sum(case when e.position = 'data_entry' then 1 else 0 end) data_entry,
  sum(case when e.position = 'assistant_manager' then 1 else 0 end) assistant_manager
from department d left join employee e
on e.deptid = d.department_id
group by d.department_id, d.dept_name

推荐阅读