不按预期工作计数和分组

时间:2016-06-19 14:18:50

标签: sql oracle

select count(*),manager_id
from departments
group by manager_id;

这是我对如何做的想法,但它给了我每位经理的员工数量

3 个答案:

答案 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。