面对这个错误ORA-00979:不是GROUP BY表达我的错误?

时间:2017-10-10 22:37:51

标签: sql

这是我的SQL查询:

select f_name, avg(age) 
from students 
group by dept_id 
having avg(age) > age;

为什么这会导致我在问题标题中提到的错误?

3 个答案:

答案 0 :(得分:1)

如果列GROUP BY声明中包含该列,则只能SELECT。另外,如果您使用的是GROUP BY子句,则需要在GROUP BY中包含所有非聚合函数列。

尝试:

select f_name, avg(age), dept_id
from students 
group by f_name, dept_id 
--not sure about this next line either
--having avg(age) > age;

答案 1 :(得分:0)

f_name不是组中的聚合。试试例如min(f_name)。

不确定"是否有平均(年龄)>年龄;"将按预期工作。

答案 2 :(得分:0)

f_name中有select,但按部门汇总。

您的having子句混合了聚合和非聚合。

据推测,你想要这样的东西:

select s.*
from (select s.*, avg(s.age) over (partition by s.dept_id) as avg_age
      from students s
     ) s 
where s.age > avg_age;