2014-01-30 32 views
1

我想知道每個管理員在組織內有多少報告,但無法完全爲我工作。查找每個家長的總子女數

下面是一個例子集 - 這是所有中的一個表,每一行都有除了第一個經理誰是頂級樹:

ID Manager 
1 NULL 
2 1 
3 2 
4 3 
5 3 
6 5 
7 5 
8 5 
9 5 
10 3 

我需要的結果出來爲:

Manager Count 
1  1 
2  1 
3  3 
5  4 

這是我迄今爲止,但它不給我我需要什麼:

select e1.manager, count(e3.id) as emp_count 
    from employee as e2 
left outer 
    join employee as e1 
    on e1.manager = e2.id 
left outer 
    join employee as e3 
    on e3.manager = e1.id 
group 
    by e1.manager 

回答

3

爲什麼你這麼多外連接?

select e1.manager, count(e1.id) as emp_count 
from employee as e1 
where e1.manager is not null 
group by e1.manager 

根據您提供的數據,在您的問題中與「父母和孩子」無關。這是一個非常簡單的聚合。如果情況並非如此,請用更好的樣本數據更新您的問題。

+0

我把我在網上找到一個例子,並試圖修改它爲我的要求 - 父/子可能不是確定這一點,但我是正確的方法認爲每個經理都是父母,他們的報告是孩子。無論哪種方式,這是一種享受,所以謝謝你 – bhttoan

+0

只要你知道,當我們說「父母/孩子」時,我們通常指的是嵌套關係,比如管理者有管理者的經理。 – miyasudokoro

0

我認爲它是如此簡單:

select manager, count(manager) 
from employee 
where manager is not null 
group by manager 
+0

你有一個錯字。 '統計(經理)'當經理分組時每次都會給你一個數。 :) – miyasudokoro

+0

它在T-SQL中工作,但你是對的,問題是在MySQL中,所以答案可能會不同。但是,由於結果由經理分組,所以我仍然感到驚訝。 – BrettFromLA

+0

如果您是按經理分組,則每組有一名經理。計數是每個組。因此,每組一名經理的人數等於1。我將確保遠離T-SQL,以避免任何其他奇怪的瘋狂結果。 :) – miyasudokoro