根据查询条件写出对应的sql

作业题目

现在有员工表、部门表和薪资表。部门表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

猜你喜欢

转载自blog.csdn.net/m0_48355416/article/details/115073083