2012-07-03 212 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