Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:统计员工人数_Mysql_Sql_Count_Max - Fatal编程技术网

MySQL:统计员工人数

MySQL:统计员工人数,mysql,sql,count,max,Mysql,Sql,Count,Max,我对sql编程非常陌生,我有一个问题 我得找一个员工人数最多的部门,我根本不知道该怎么做 我能用的桌子是 我想最终的结果会有列,Department_no和Max(Count(Department_no)),但我不确定如何得到这个?还是有一种更简单的方式我只是看不见 编辑到目前为止我已经 选择部门号,计数(部门号) 来自经理或老板 按部门分组(编号), 但理想情况下,我希望找到计数的最大值,但SQL不断给出“无效使用组函数错误”。您可以使用下面的查询来获取员工人数较多的部门 select a.

我对sql编程非常陌生,我有一个问题

我得找一个员工人数最多的部门,我根本不知道该怎么做

我能用的桌子是

我想最终的结果会有列,Department_no和Max(Count(Department_no)),但我不确定如何得到这个?还是有一种更简单的方式我只是看不见

编辑到目前为止我已经

选择部门号,计数(部门号)
来自经理或老板
按部门分组(编号),


但理想情况下,我希望找到计数的最大值,但SQL不断给出“无效使用组函数错误”。

您可以使用下面的查询来获取员工人数较多的部门

select a.Department_no ,count(a.Staff_id) maxstaffa
from table a
cross join (
    select count(Staff_id) maxstaffb
    from table
    group by Department_no 
    order by maxstaffb desc
    limit 1
) b
group by a.Department_no
having maxstaffa = b.maxstaffb
注:上述查询可以返回多个部门,前提是它们都具有相同的最大员工数


您可以使用下面的查询获取员工人数较多的部门

select a.Department_no ,count(a.Staff_id) maxstaffa
from table a
cross join (
    select count(Staff_id) maxstaffb
    from table
    group by Department_no 
    order by maxstaffb desc
    limit 1
) b
group by a.Department_no
having maxstaffa = b.maxstaffb
注:上述查询可以返回多个部门,前提是它们都具有相同的最大员工数


您可以在查询中使用count with group by子句,如下所示

 select Department_no, count(Staff_id) from ManagerOrBoss
 group by department_no
 order by count(staff_id) limit 1

您可以在查询中使用count with group by子句,如下所示

 select Department_no, count(Staff_id) from ManagerOrBoss
 group by department_no
 order by count(staff_id) limit 1

一些更倾向于数据库的人可能会告诉我们为什么这是一个非常糟糕的主意,但是为了让部门拥有最多的成员,我会做如下事情:

SELECT Department_no, COUNT(Staff_id) TheCount
FROM ManagerOrBoss
GROUP BY Department_no
HAVING TheCount = (
    SELECT MAX(Num) 
    FROM (
        SELECT Department_no, COUNT(Staff_id) Num 
        FROM ManagerOrBoss 
        GROUP BY Department_no
    ) as A
)

如果我的语法有点错误,我道歉。我通常在MSSQL中工作,但尝试将其应用于MySQL。

一些更倾向于数据库的人可能会告诉我们为什么这是一个非常糟糕的主意,但为了让部门拥有最多的成员,我会做以下事情:

SELECT Department_no, COUNT(Staff_id) TheCount
FROM ManagerOrBoss
GROUP BY Department_no
HAVING TheCount = (
    SELECT MAX(Num) 
    FROM (
        SELECT Department_no, COUNT(Staff_id) Num 
        FROM ManagerOrBoss 
        GROUP BY Department_no
    ) as A
)

如果我的语法有点错误,我道歉。我通常在MSSQL中工作,但尝试将其应用于MySQL。

是否有任何部门表?否,我必须将该表转换为第三范式(希望我做得正确),并将其视为非必要表。是否有任何部门表?否,我必须将该表转换为第三范式(希望我做得正确)并认为这是一个非必要的表。看看如果有两个部门拥有相同数量的员工会怎么样?@MKhalidJunaid用户想知道如何让该部门拥有最大数量的员工。无论如何,谢谢你指出这个部门有相同的最大员工数+1如果有两个部门拥有相同数量的员工,该怎么办?@MKhalidJunaid用户想知道如何让该部门拥有最大数量的员工。无论如何,谢谢你指出这个部门有相同的最大员工数+1.