2012-07-03 211 views
3

我想要做的就是數由子查詢返回的行數,主要是:SQL聚合函數的子查詢

select pp.prop_id, COUNT((select employee_id from employee e where e.ao1_hours > 0)) 
    from proposal_piece pp 

    group by pp.prop_id 
    order by pp.prop_id 

這是我的錯誤信息:

Cannot perform an aggregate function on an expression containing an aggregate or a subquery. 

爲什麼這不行?如果select只是返回一堆帶有過濾條件的employee_id's,爲什麼我不能計算正在返回的行數或employee_id's

我在計算有ao1_hours > 0的不同僱員的人數。按prop分組。

這是關於我的數據庫的一些結構信息,作爲查詢的一部分。

from proposal_piece pp 
    INNER JOIN employee e 
    on pp.employee_id = e.employee_id 

謝謝!

+0

結果是什麼 – phadaphunk

+2

結果將會顯示每個PROP_ID具有相同數量的員工。這是你在找什麼? –

+0

不,我正在計算具有ao1_hours> 0的不同員工的數量。按支柱分組。 – CodeKingPlusPlus

回答

5

試試這個

select pp.prop_id, 
     (select COUNT(employee_id) 
     from employee e 
     where e.ao1_hours > 0 and e.employee_id = pp.employee_id) as nb_employees 
from proposal_piece pp  
order by pp.prop_id 

或本

select pp.prop_id, count(e.employee_id) as nb_employees 
from proposal_piece pp inner join employee e 
    on pp.employee_id = e.employee_id 
where e.ao1_hours > 0 
group by pp.prop_id 
order by pp.prop_id 
+3

我一直在忍者 – phadaphunk

+0

@PhaDaPhunk你是什麼意思? –

+0

我正在鍵入eaxct相同的東西 – phadaphunk