2016-06-19 20 views

回答

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) 
+0

在upvote之後,我添加如果存在管理者表格,您可以使用具有多個鏈接員工的子查詢來查詢該表格,因此如果管理員沒有員工,你會得到零信息。 –

+0

我同意有些情況下應該完成,你也可以從'departments'查詢'manager_id',並將其加入'employees',但是我非常懷疑沒有至少一名員工的經理是可能的在他之下.. @JoeTaras – sagi

-1

我已經面對你的一個類似的問題。 嘗試在計數中添加您正在計數的ID,即employeeid。 如果在嘗試在組中添加相同的ID之後它仍然不起作用。

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,但一般情況下前者返回記錄數後者僱員數(可以更低)。