您需要将所有列包含在选择列表中以进行分组。见这里http://www.dba-oracle.com/t_ora_00979_not_a_group_by_expression.htm
从文档
原因:GROUP BY 子句不包含 SELECT 子句中的所有表达式。未包含在组函数中的 SELECT 表达式(例如 AVG、COUNT、MAX、MIN、SUM、STDDEV 或 VARIANCE)必须列在 GROUP BY 子句中。
行动:在 GROUP BY 子句中包含所有不是组函数参数的 SELECT 表达式
补救措施,将选择列表中的所有列包含到您的group by
子句中。更改您的查询
select s.S_FIRST||' '||s.S_LAST as fullname, s.s_id,
sum(c.CREDITS) as total_credit from enrollment e,
student s,course c
where s.s_id=e.S_ID
and c.COURSE_NO=e.C_SEC_ID
group by s.S_FIRST||' '||s.S_LAST
having total_credit > 12
order by s.s_id;
根据 Oracle 规范错误ORA-01722
意味着The attempted conversion of a character string to a number failed because the character string was not a valid numeric literal.
确保所有字段都是 INT 类型或相同类型。是c.CREDITS
INT 类型吗?
是s.s_id
和e.S_ID
同类型的?
是c.COURSE_NO
和e.C_SEC_ID
同类型的?