mysql - 显示监管 3 名或更多员工的主管

标签 mysql sql

员工表

ID    Name        Supervisor_ID

1     James        NULL
2     Peter        1
3     Howard       1
4     Michele      2
5     Nicholas     2
6     Donald       2
7     Jackson      3
8     Anderson     3
9     Jeff         3
10    Will         3

我应该在最后得到这个

ID    Name     Supervisor_Of_X_Employee

4     Peter    3
2     Howard   4

我试过

SELECT t1.employee_id
FROM  employee t1
      JOIN (SELECT DISTINCT supervisor_id FROM employee) t2
      ON t1.employee_id = t2.supervisor_id; 

似乎没有产生我想要的东西

有什么想法吗?

谢谢

最佳答案

你想找到主管人数,所以你像这样对主管 ID 进行分组

SELECT Supervisor_ID, count(*) as CNT
FROM  employee
GROUP BY Supervisor_ID

添加 HAVING COUNT(*) > 2 以获得 3 或更多的数。

哦...但你也想要这个名字?然后你必须重新加入表以获取名称。

SELECT E.ID, E.Name, SUB.CNT 
FROM (
  SELECT Supervisor_ID, count(*) as CNT
  FROM  employee
  GROUP BY Supervisor_ID
  HAVING COUNT(*) > 2
) AS SUB
JOIN employee as E on E.ID = SUB.Supervisor_ID

关于mysql - 显示监管 3 名或更多员工的主管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609885/

相关文章:

mysql - 许多表上的 ORDER BY SQL

mysql - 在 vb.net 中使用 linq 和 mysql 数据库

sql - MySQL仅从一张表中查询出现在某一类别表中的产品

Mysql 从加载文件中的另一个表中选择

mysql - 同列计算/百分比

sql - 合并 SQL 中两个数据库表的结果

php - JQUERY自动完成获取id而不是值

php - 使用 PHP 获取 mySQL 行项目 ID

sql - 将值从实数值列复制到 SQL 中的小数值列

sql - 从 PostgreSQL 中的字符串中删除数字索引