[英]Left join or inner join
我有一个表, 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
使用LEFT JOIN
和聚合。 如果您正在学习SQL,请忘记RIGHT JOIN
。 几乎不需要它。 而且, LEFT JOIN
更易于遵循(“将所有内容保留在第一个表中”和“将所有内容保留在最后一个表中”)。
所以:
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;
您只需要在组中添加名字和姓氏即可? 我是否缺少一些复杂性?
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.