2)查询每个部门每种岗位的职工人数,包括没有职工的岗位
时间: 2024-10-21 17:12:55 浏览: 9
4队职工电子岗位合格证二维码.rar
为了查询每个部门每种岗位的职工人数,包括那些没有职工的岗位,你需要使用`LEFT JOIN`连接Employee和Post表,并使用`COALESCE`函数处理可能存在的NULL值。这将确保即使是未分配到任何岗位的部门也能显示0作为职工人数。以下是SQL语句:
```sql
SELECT d.deptID, p.pname, COUNT(e.empID) AS employee_count
FROM Department d
LEFT JOIN Employee e ON d.deptID = e.deptID
LEFT JOIN Post p ON e.PID = p.PID
GROUP BY d.deptID, p.pname
ORDER BY d.deptID, p.pname;
```
这个查询首先通过部门ID(deptID)关联部门和员工,然后通过岗位ID(PID)关联员工和岗位。如果没有匹配的记录,计数就会为NULL,`COUNT()`函数会返回NULL。`COALESCE(NULL, 0)`则会把NULL转换为0,使得结果始终包含每个部门和岗位的职工数,哪怕这个岗位上没有职工。最后按部门和岗位名称排序结果。
阅读全文