当我使用以下查询时,它可以工作:
select d.id,
d.name,
count(e.id) as numberofemployees
from department d,
employee1 e
where d.id=e.deptid
group by d.id,
d.name
order by d.id;
但是当我使用以下查询时,它会给我错误:
select d.id,
d.name,
count(e.id) as numberofemployees
from department d,
employee1 e
where d.id=e.deptid
group by d.id
order by d.id;
错误如下:
选择d.id,d.name,count(e.id)作为员工人数
第1行的错误:ORA-00979:不是GROUP BY表达式
我不明白问题是什么。我认为对单列进行分组应该没问题。 任何帮助将不胜感激。
答案 0 :(得分:6)
在大多数DBMS实施中,GROUP BY
必须包含未出现在聚合函数中的每一列(AVG()
,SUM()
,COUNT()
等)。如果有两列(ID和Name)不在聚合函数中,则必须在GROUP BY
子句中列出这两列。
答案 1 :(得分:2)
在第二个查询中,名称列不在group by子句中,这会导致您的错误。
因此,以下查询将产生结果:
select d.id,
count(e.id) as numberofemployees
from department d,
employee1 e
where d.id=e.deptid
group by d.id
order by d.id;
Ken White的回答解释了为什么会出现这种情况。