sql - 如何显示每个部门每个职位的员工人数
问题描述
我有两个表,名为Employee
和Department
。
员工(Emp_ID、姓名、职位、部门 ID)
部门(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
解决方案
使用toLEFT JOIN
和条件聚合:department
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_name
推荐阅读
- python - 键盘键按住以运行并释放以暂停 python 中的语音识别器
- c# - 有什么方法可以获取所有打开的应用程序的列表,然后跳转到那个窗口
- python - 如何从 python oop 中的另一个类访问对象?
- php - 未找到 Amazon S3 PHP SDK MultipartUploader 类
- angular - NPM Install 说“更新了 3 个包”,但没有说是哪些?
- c# - 当我尝试在 Xamarin Forms 上上传图像时,继续收到相同的错误
- google-data-studio - 在 Data Studio 的条形图中调整条形之间的间隙
- html - 如何在图像上使用 resize 属性?
- html - 如何避免页脚中没有线条的表格打印?
- javascript - 从对象与对象反应表