这是我的SQL查询:
select f_name, avg(age)
from students
group by dept_id
having avg(age) > age;
为什么这会导致我在问题标题中提到的错误?
答案 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;