3

私がやりたいことは、サブクエリによって返される行の数を数えることです。基本的には次のとおりです。

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

ありがとう!

4

1 に答える 1

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
于 2012-07-03T13:52:54.820 に答える