You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL GROUP BY报错ORA-00979:非GROUP BY表达式求助

解决ORA-00979: 非GROUP BY表达式错误

错误原因

ORA-00979的核心问题是违反了Oracle的GROUP BY语法规则:SELECT子句中所有未使用聚合函数的列,必须全部出现在GROUP BY子句中。你的查询里,SELECT了e.EMPNO、e.EMPNAME、e.DEPT_NO、d.DEPT_NAME这些非聚合列,但GROUP BY仅指定了d.DEPT_NO,不符合规则,因此触发错误。


解决方案

根据你的实际需求选择对应处理方式:

场景1:确实需要按部门分组统计

如果需求是按部门维度做聚合统计(比如统计部门员工数),需要调整SELECT子句,仅保留分组列和聚合函数,同时将所有非聚合列加入GROUP BY:

-- 示例:按部门分组,展示部门编号、名称及员工数量
SELECT d.DEPT_NO, d.DEPT_NAME, COUNT(e.EMPNO) AS EMP_COUNT
FROM EMPLOYEE e 
JOIN DEPARTMENT d ON e.DEPT_NO = d.DEPT_NO 
GROUP BY d.DEPT_NO, d.DEPT_NAME;

注:这里将d.DEPT_NAME加入GROUP BY,因为它是SELECT中的非聚合列;同时使用COUNT()完成聚合统计,符合分组逻辑。

场景2:仅需关联查询员工与部门信息

如果只是想获取员工对应的部门信息,不需要分组,直接删除GROUP BY子句即可:

SELECT e.EMPNO, e.EMPNAME, e.DEPT_NO, d.DEPT_NAME
FROM EMPLOYEE e 
JOIN DEPARTMENT d ON e.DEPT_NO = d.DEPT_NO;

建议用显式JOIN语法替代旧的逗号分隔表写法,可读性更强。

内容的提问来源于stack exchange,提问作者cactus8888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:15:36