mysql - 统计主管的员 worker 数

标签 mysql sql

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 byCOUNT 聚合函数

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/

相关文章:

mysql - 如何将 😃 插入具有 utf8mb4 字符集的 MySQL 表中?

mysql - 如何使用 TSQl 从文件夹读取文件并将文件名保存到表中?

mysql - 使用专有的 ODBC 驱动程序将 MySQL 连接到外部数据源

mysql - SQL - 选择按日期排序的最后一行

mysql - 使用一组选择最佳方法的结果插入行

php - 如何将数据从服务器中的文本文件导入到mysql数据库

php - 对行中的每个数字进行一次查询

sql - 从多个表中进行选择的存储过程

java - 使用jdbc向数据库中插入数据

sql - 检查选择查询在 SQL Server 存储过程中是否有结果