现在有员工表、部门表和薪资表。
部门表depart的字段有depart_id, name;
员工表 staff 的字段有 staff_id, name, age, depart_id;
薪资表salary 的字段有 salary_id,staff_id,salary,month。
(问题c):求公司每个部门的月支出薪资数,要求输出部门、月份和本月薪资总数
创建表
--部门表
create table depart (depart_id int,name varchar(20));
--员工表
create table staff (staff_id int,name varchar(20),age int,depart_id int);
--薪资表
create table salary (salary_id int,staff_id int,salary decimal(7,2),month int);
查询语句:
select depart.name,month,sum(salary) from depart
-> join staff on staff.depart_id = depart.depart_id
-> join salary on salary.staff_id = staff.staff_id
-> group by depart.name,month;
分析:
根据题目要求,查询输出的字段有部门,月份和本月薪资总额,其中部门名称depart.name来自表depart,所以可先写出,
select depart.name,month,sum(salary) from depart
字段月份month和薪资salary来自表salary,所以要通过联合查询,内连接的连接条件来建立表的连接关系
因为薪资表salary里的数据并没有关于部门的信息,所以要先创建员工表staff和部门表的联系
-> join staff on staff.depart_id = depart.depart_id
然后再建立薪资表salary和员工表staff的联系
-> join salary on salary.staff_id = staff.staff_id
最后通过group by 先对depart.name分组,再在每个部门中对month分组即可
-> group by depart.name,month;
得到查询结果如图