题目描述:汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的员工的title以及该类型title对应的数目count,结果按照dept_no升序排序。
最开始是想用窗口函数来解决:
select d.dept_no, d.dept_name, t.title, count(distinct title) over(partition by dept_no,title) from departments d join dept_emp de on d.dept_no=de.dept_no join titles t on de.emp_no=t.emp_no where de.to_date="9999-01-01" and t.to_date="9999-01-01" order by dept_no
但是实际使用时才发现count()窗口函数不支持distinct。那么这里换成group by分组也是一样。既然需要显示每个部门里面每个职位对应的数量,那么按dept_no,title分组就好了。
select d.dept_no,d.dept_name,t.title,count(title) from departments d join dept_emp de on d.dept_no=de.dept_no join titles t on de.emp_no=t.emp_no where de.to_date="9999-01-01" and t.to_date="9999-01-01" group by dept_no,title order by dept_no