【问题标题】:Sql join with two tables max and countSql join 与两个表最大和计数
【发布时间】:2021-05-02 23:05:34
【问题描述】:

我有两张桌子

员工: 员工编号 员工姓名 工资 divison_id

部门: 部门ID 部门名称

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

我想要这样的结果:

division_id division_name total_employee
  Z-100   | finance       |   3

【问题讨论】:

    标签: sql join count max


    【解决方案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 
    

    【讨论】:

      【解决方案2】:

      如果您想要拥有最多员工的所有部门,您应该考虑一个以上的部门可以拥有它。所以我正在修改我的答案,而不是 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        相关资源
        最近更新 更多