我有一个表,Table_employee
有员工ID,薪水,经理(每个员工各自经理的ID)和另一个表
Table_manager
,其中包含每个经理的名字,姓氏和每个经理的ID。
我试图创建另一个表,该表显示经理的名字,姓氏以及每个经理负责的员工人数以及这些员工的总薪水。
我很难提供经理的名字和姓氏。
我的代码如下。任何帮助将不胜感激。
非常感谢您!
select
e.manager,
COUNT(e.employee_id),
SUM(e.salary)
FROM
Table_employee e
Right outer join Table_manager m ON e.manager=m.employee_id
GROUP BY
manager
ORDER BY
manager
答案 0 :(得分:2)
使用LEFT JOIN
和聚合。如果您正在学习SQL,请忘记RIGHT JOIN
。几乎不需要它。并且LEFT JOIN
更易于遵循(“保留 first 表中的所有内容”与“保留 last 表中的所有内容,不管是什么”)。 / p>
所以:
select m.employee_id, m.firstname, m.lastname,
count(e.employee_id), sum(e.salary)
from Table_manager m left join
Table_employee e
ON e.manager = m.employee_id
group by m.employee_id, m.firstname, m.lastname
order by m.employee_id;
答案 1 :(得分:1)
您只需要按组添加姓氏和名字?我错过了一些复杂性吗?
select e.manager, m.firstname, m.lastname, COUNT(e.employee_id), SUM(e.salary)
FROM Table_employee e
Right outer join Table_manager m ON e.manager=m.employee_id\
GROUP BY manager, m.firstname, m.lastname
ORDER BY manager
但是,交换订单以使经理在左边而雇员在右边是更有意义的,这样您就不会错过没有雇员的经理:
select e.manager, m.firstname, m.lastname, COUNT(e.employee_id), SUM(e.salary)
FROM Table_manager m
Right outer join Table_employee e ON e.manager=m.employee_id
GROUP BY manager, m.firstname, m.lastname
ORDER BY manager