因此,我有三个查询,我正在尝试连接所有部门名称字段,但我不知道如何在它们上进行连接。下面的每个查询都会给出我正在查找的一些或部分信息,但我希望将这些信息按部门合并到一个表中。第一张表为:(部门合计员工数)`
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;
`这给了我这样的结果:
管理Waltham
操作Waltham
运营Woburn
Loans Waltham
操作Quincy
运营Salem
我想要一个表,它只给我合计按部门(行政,贷款,运营)的员工(第一个表),经理(总经理管理每个部门的员工)和多少不同的分支机构位置每个部门位于。因此,查询应该返回部门|员工计数|位置计数|经理计数,以及每个部门各自的合计。
我正在尝试弄清楚如何对此执行连接查询。任何帮助都将不胜感激。
发布于 2013-06-14 06:16:09
通过使用子选择,您应该能够获得所需的结果
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
https://stackoverflow.com/questions/17093946
复制相似问题