题目描述:汇总各个部门当前员工的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
京公网安备 11010502036488号