Sql 连接两个表 max 和 count

Sql join with two tables max and count

我有两张桌子

员工: employee_numberemployee_name工资divison_id

师: division_iddivision_name

如何显示部门 ID、部门名称、员工人数最多的每个部门的员工人数。

我想要这样的结果:

division_id division_name total_employee
  Z-100   | finance       |   3

如果您想要拥有最多员工的所有部门,您应该考虑不止一个部门可以拥有它。所以我正在修改我的答案,而不是 top 我使用 Rank() 和 CTE 来获得员工人数最多的所有部门。

with DivisionWithMostEmployee as 
(
    select Rank()over(order by count(*) desc) RowNumber, d.division_id, d.division_name, count(*) TotalEmployee 
    from division d, employee e where d.division_id=e.division_id 
    group by d.division_id,d.division_name 
)
select Division_id,Division_name,TotalEmployee from DivisionWithMostEmployee where RowNumber=1
SELECT *
FROM   (SELECT e.division_id,
               d.division_name,
               Count(1) total_employee
        FROM   employee e
               JOIN division d
                 ON e.division_id = d.division_id
        GROUP  BY e.division_id
        ORDER  BY Count(1) DESC)a
LIMIT  1