第一步,根据输出的列名,需要将三张表相关字段join,即
departments d
right join dept_emp de
on d.dept_no=de.dept_no 
right join titles t
on t.emp_no=de.emp_no
第二步,title类型技术是新增字段,所以用count()over()窗口函数创建,易错点,题目原文是“汇总各个部门所有的员工的title对应的数目”,即是对部门dept_no里面的title进行分类求和有多少个员工,所以其实是count(t.emp_no)over(partition by de.dept_no,title)
最后就是,保存提交提示可能存在dept_no、dept_name、title都一样的情况下,窗口函数需要合并的情况,SELECT DISTINCT 的作用是去除整行的重复,即如果有任何行在 dept_no, dept_name, 和 title 这三列上完全相同,那么这些行在结果集中将只出现一次。换句话说,它将去除重复的行,使得每个 dept_no, dept_name, title 的组合在结果集中都是唯一的。~完整代码如下
select distinct de.dept_no,dept_name,title,
count(t.emp_no)over(partition by de.dept_no,title)
from
departments d
right join dept_emp de
on d.dept_no=de.dept_no 
right join titles t
on t.emp_no=de.emp_no
order by de.dept_no,title