我想创建一个查询,以便显示每个项目编号,名称,分配的员工数量和总分配小时数

时间:2013-05-22 02:47:14

标签: sql oracle

到目前为止,我已经有了这个代码,但是对于eac项目中的员工数量似乎无法实现。

SELECT  p.projno, p.pname, COUNT(e.ename) as "NUM_ASSGD_EMPS", SUM(a.num_hours) as "num_hours"
FROM    emp e, assignment a, proj p
WHERE e.empno = a.empno AND p.projno = a.projno
GROUP BY e.ename, p.Projno, p.pname;

1 个答案:

答案 0 :(得分:0)

您的分组与汇总不匹配。 group by应包含没有sum / count等聚合的字段。在你的情况下,这只是projno和pname。 ename不应该在/被组合在一起/毕竟,如果按此分组,你总是得到1的数量!

所以试试

SELECT  p.projno, p.pname, COUNT(e.ename) as "NUM_ASSGD_EMPS", SUM(a.num_hours) as "num_hours"
FROM    emp e, assignment a, proj p
WHERE e.empno = a.empno AND p.projno = a.projno
GROUP p.Projno, p.pname;