所以我有三个查询,我试图在部门名称字段上连接所有查询,但我不知道如何对它们进行连接。下面的每个查询都给了我一些或部分我正在寻找的信息,但我希望按部门将信息组合在一个表中。第一个表格是:(按部门的员工总数)'
select d.name, count(*)
from employee e join department d
on e.dept_id = d.dept_id
group by d.name;
'结果是:
管理 3
贷款1
操作14
第二个是:'
select d.name, m.emp_id
from employee e join employee m
on e.superior_emp_id = m.emp_id
join department d
on d.dept_id = e.dept_id
group by d.name, m.emp_id;
'它给了我这个(经理id号,以及他们在哪个部门工作)
3操作贷款4
操作6
操作10
操作13
操作4
操作16
政府1
和第三个表:'
select d.name, b.city
from employee e join branch b
on e.assigned_branch_id = b.branch_id
join department d
on d.dept_id = e.dept_id
group by d.name, b.city;
'结果是:
政府沃尔瑟姆操作沃尔瑟姆
操作沃本
贷款沃尔瑟姆
操作昆西
操作Salem
我想要一个表,它只给我部门(管理、贷款、运营)的员工(第一个表)、经理(管理每个部门员工的总经理)的总和,以及每个部门位于多少个不同的分支机构。那么查询应该返回部门|员工人数|地点人数|经理人数,以及每个部门各自的总数。
我想弄清楚如何做这个连接查询。
您应该能够通过使用subselects
获得您正在寻找的结果。SELECT
d.Name AS Dept
,(SELECT COUNT(*)
FROM Employee e
WHERE e.dept_id = d.dept_id ) AS StaffCount
,(SELECT COUNT(*)
FROM Employee e
JOIN Branch b ON e.assigned_branch_id = b.branch_id
WHERE e.dept_id = d.dept_id GROUP BY b.city) AS LocationCount
,(SELECT COUNT(*)
FROM Employee e
JOIN Employee m ON e.superior_emp_id = m.emp_id
WHERE e.dept_id = d.dept_id GROUP BY m.emp_id) AS ManagerCount
FROM department d