【发布时间】:2017-06-18 19:29:53
【问题描述】:
我有一张员工表。每个员工都有一个员工 ID。一些员工有一个主管字段,该字段链接回另一个员工的 ID。现有员工10人,其中监事2人,每人监事4人。我正在尝试获取所有员工的列表以及他们监督的其他员工的数量。到目前为止,我似乎只能让主管和他们监督的人数显示出来。这是我的查询:
SELECT s.employee_name, COUNT(*)
FROM employee e
join employee s on e.supervisor_id= s.employee_id
group by s.
order by s.employee_name;
我尝试将 JOIN 更改为 RIGHT JOIN,它现在将显示所有 10 名员工,其中两名主管显示为有 4 人被他们监督,但它显示所有其他人没有人可以监督为 1 而不是 0 . 我敢肯定这是我缺少的一些简单的东西。
样本数据:
employee_name, employee_name, supervisor_id,
'10111', 'Sydnee K. Stevens' NULL
'10870', 'Colton C. Rocha', '10111'
'11425', 'Astra V. Sharp','10111'
'12973', 'Melanie X. Rojas','10111'
'14451', 'Bethany Roman','10111'
'14597', 'Lydia Edwards', NULL
'16153', 'Selma Q. Conley', '14597'
'17730', 'Kristen B. Malone', '14597'
'17762', 'Barrett B. Bauer', '14597'
'18628', 'Shana Z. Flowers','14597'
【问题讨论】:
-
请提供样本数据和预期结果。 PS - “一些”有主管字段?
-
应该是“有些员工有 supervisor_id”
-
"所有其他没有人监督的都是 1 而不是 0" - 这是因为
COUNT(*)。试试COUNT(e.supervisor_id) -
啊,这就是我所缺少的。谢谢。
标签: mysql group-by right-join