select count(*),manager_id
from departments
group by manager_id;
这是我对如何做的想法,但它给了我每位经理的员工数量
答案 0 :(得分:1)
我怀疑你是从错误的表中选择的,逻辑似乎是正确的,但你从表格departments
中选择的事实有点可疑。
你有员工表吗?它是否包含manager_id
列?如果是这样的话:
select count(*),manager_id
from employees
group by manager_id;
如果员工表只有department_id
列,那么:
SELECT d.manager_id,count(*)
FROM employees e
INNER JOIN departments d
ON(e.department_id = d.id)
答案 1 :(得分:0)
使用HR模式中的示例表
select MANAGER_ID, count(*), count(distinct EMPLOYEE_ID)
from HR.EMPLOYEES
group by MANAGER_ID
order by 1 nulls first;
给出
MANAGER_ID COUNT(*) COUNT(DISTINCTEMPLOYEE_ID)
---------- ---------- --------------------------
1 1
100 14 14
101 5 5
102 1 1
注意第一行,经理IS NULL - 即有一名员工没有经理。
还不是我同时使用count(*)
和count(distinct EMPLOYEE_ID)
。这与此表无关,其中EMPLOYEE_ID
是PK,但一般情况下,前者返回记录数后者员工数(其中可以更低)。
答案 2 :(得分:-1)
我遇到过与你类似的问题。 尝试在计数内添加您正在计算的ID,即employeeid 。 如果在此之后仍然无效,请尝试在组中添加相同的ID。