SQL聚合函数子查询

Cod*_*lus 3 sql aggregate rows count subquery

我想要做的是计算子查询返回的行数,基本上如下:

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
Run Code Online (Sandbox Code Playgroud)

这是我的错误消息:

Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?如果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
Run Code Online (Sandbox Code Playgroud)

谢谢!

ano*_*ari 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   
Run Code Online (Sandbox Code Playgroud)

或这个

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
Run Code Online (Sandbox Code Playgroud)

  • 我一直都是忍者 (3认同)