ORA-00979:不是GROUP BY 表达式

查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩。

问题描述

select sc.s_id, st.s_name,avg(sc.s_score) avg_score
from score sc,student st
where st.s_id = sc.s_id
group by sc.s_id
having avg(sc.s_score)>= 60;

在oracle中用这个查询语句,会报错误:ORA-00979:不是GROUP BY 表达式

原因分析:

select 列表项中不存在的列可以出现在group by的列表项中,但反过来就不行了,在select列表项中出现的列必须全部出现在group by后面。
参考博客:https://blog.csdn.net/dreamderekwq/article/details/47253577


解决方案:

在group by 后补充完整即可

select sc.s_id, st.s_name,avg(sc.s_score) avg_score
from score sc,student st
where st.s_id = sc.s_id
group by sc.s_id, st.s_name
having avg(sc.s_score)>= 60;

你可能感兴趣的:(oracle,数据库)