尝试使用连接查询将来自三个不同表的信息绑定到一个表中



所以我有三个查询,我试图在部门名称字段上连接所有查询,但我不知道如何对它们进行连接。下面的每个查询都给了我一些或部分我正在寻找的信息,但我希望按部门将信息组合在一个表中。第一个表格是:(按部门的员工总数)'

    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

最新更新