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
我有两张桌子
员工: 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