我有两张桌子,名为Employee和Department。
员工(Emp_ID,姓名,职位,DeptID) 系(Department_ID,Dept_Name)。
员工的职位可以是tech_support、data_entry或assistant经理。
我希望显示每个部门的名称以及在每个职位上工作的员工人数,以便在单独的列中显示每个职位。
如果部门没有员工在某个职位工作,则显示的数字应为零。
样本输出:
Dept_Name tech_support data_entry assistant manager
Accounts 5 6 2
Production 2 4 2
Sales/Marketing 0 6 3发布于 2019-09-08 08:22:11
使用LEFT JOIN of department to employee和条件聚合:
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_namehttps://stackoverflow.com/questions/57840225
复制相似问题