作业题目
现在有员工表、部门表和薪资表。部门表depart的字段有depart_id, name;员工表 staff 的字段有 staff_id, name, age, depart_id;薪资表salary 的字段有 salary_id,staff_id,salary,month。
(问题a):求每个部门’2016-09’月份的部门薪水总额
(问题b):求每个部门的部门人数,要求输出部门名称和人数
(问题c):求公司每个部门的月支出薪资数,要求输出月份和本月薪资总数
实现
–(问题a)说明:mysql中年和月的函数分别是year(字段),month(字段)
–查询要求的是每个部门的信息,所以要按照部门进行分组,
–部门和员工为1:m,员工与薪水为1:m,
–查询要求有部门,有薪水,所以必须关联3张表查询
select dep.name,sum(sal.salary) from salary sal
inner join staff sta on sal.staff_id=sta.staff_id
join depart dep on sta.depart_id=dep.depart_id
where year(sal.month)=2016
and month(sal.month)=9
group by dep.depart_id;
–(问题b)说明:查询要求的信息有部门,有人数,
–人数只能从员工表中获取,所以关联表为部门表/员工表,
–按照部门id分组查询员工id的行数
select dep.name,count(sta.staff_id) from staff sta
inner join depart dep on dep.depart_id=sta.depart_id
group by sta.depart_id;
–(问题C)说明:按照题目要求,查询信息有部门/月/每个部门每月薪资总额,
–其中薪水信息再薪水表中,每个员工可以有多条薪资记录(不同时间)
–所以需要按照部门分组,再按照月份分组,
–查询分组的部门在不同月份下的总薪水
select dap.name,sal.month,sum(sal.salary) from depart dep
inner join staff sta on dep.depart_id = sta.depart_id
join salary sal on sta.staff_id = sal.staff_id
group by dep.depart_id,sal.month