所以我有三个查询我正在尝试加入部门名称字段,但我不知道如何加入它们。我在下面的每个查询都给了我一些或部分我正在寻找的信息,但我希望这些信息按部门合并在一个表中。 第一个表是:(按部门划分的员工总数) `
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;
` 这给了我这个(经理身份证号码,以及他们在哪个部门工作)
行动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;
` 这给了我这个:
行政Waltham
沃尔瑟姆行动
操作Woburn
贷款Waltham
运营昆西
运营Salem
我想要一张表,只是给我部门(管理员,贷款,操作)的员工总数(第一张表),经理(管理每个部门员工的总经理)以及有多少个不同的分支机构每个部门都位于。所以查询应该回来了 部门|员工人数|位置计数|经理计数及各部门各自的总数。
我正在试图弄清楚如何对此进行连接查询。任何帮助将不胜感激。
答案 0 :(得分:0)
您应该可以使用子选择
来获得您要查找的结果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