SELECT
e.lname AS employee_name
, s.lname AS supervisor_name
, e.superssn AS supervisor_ssn
FROM employee e INNER JOIN employee s
WHERE e.superssn=s.ssn
其实我有两个问题。第一个是,上面的语句很好用。然而现在它会显示一群员工和他们的主管。组织得不好。顺便说一句,监事一共有三名。有没有办法显示主管 A 与员工 A 以及主管 B 与员工 B 等等?
第二个问题是我也尝试只计算每个主管的员工数量,而不是用 COUNT() 显示他们的名字,我尝试了几种不同的方法但没有成功。
最佳答案
一些事情
1) 最好将连接谓词与连接一起保留。所以改变:
FROM employee e INNER JOIN employee s WHERE e.superssn = s.ssn
致:
FROM employee e INNER JOIN employee s ON e.superssn = s.ssn
2) 要由主管将它们放在一起,只需使用 order by
:
SELECT
e.lname AS employee_name
, s.lname AS supervisor_name
, e.superssn AS supervisor_ssn
FROM employee e INNER JOIN employee s ON e.superssn = s.ssn
ORDER BY s.lname
3) 要计算每个主管的员工数量,请使用 group by
和 COUNT
聚合函数
SELECT
s.lname AS supervisor_name,
COUNT(*) AS employee_count
FROM employee e INNER JOIN employee s ON e.superssn = s.ssn
GROUP BY s.lname
ORDER BY s.lname
关于mysql - 统计主管的员 worker 数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177310/