0

因此,我尝试在部门名称字段中加入三个查询,但我不知道如何加入它们。下面的每个查询都给了我正在查找的部分或部分信息,但我希望将信息按部门组合在一个表中。第一个表是:(按部门的员工总数)`

    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;

` 这给了我这个:

管理 沃尔瑟姆
运营 沃尔瑟姆
运营 沃本
贷款 沃尔瑟姆
运营 昆西
运营 塞勒姆

我想要一个表格,它只给我按部门(管理员、贷款、运营)对员工(第一个表)、经理(管理每个部门员工的总经理)以及每个部门有多少不同的分支机构位置的总和位于。所以查询应该返回 Dept| 员工人数 | 位置计数 | 每个部门的经理计数与他们各自的总数。

我试图弄清楚如何对此进行连接查询。任何帮助将不胜感激。

4

1 回答 1

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
于 2013-06-13T22:16:08.897 回答