查询每个部门的员工个数:

select d.department_id, (
select count(*) from employees e where e.department_id = d.department_id
) 个数 from departments d;


一个直接的思路是将两张表外连接(部门表做主表),再按照部门分组,然后count计算每组的个数。但是这里有个坑,因为有一些个体是没有部门的,所以左连接以后,这些没有员工的部门连接了null。但是如果此时分组计数,这些部门也会被记入,就出现了错误。

正确的做法是代码块区域,只是此时,d.department_id决定了表的结构,于是在每个d.department_id的基础上进行了计数,括号里的内容可以看做一个内连接。