首页 > 解决方案 > oracle 11g 上出现 ORA-00979 的原因是什么

问题描述

试图了解GROUP BYSQL中的使用

我已经多次遇到这个错误,我可能无法识别核心以便在以后解决它

SELECT d.department_name
FROM departments d
JOIN employees e
ON (d.department_id = e.department_id)
GROUP BY d.department_name
HAVING (SELECT COUNT(*) FROM employees) > 5
AND e.commission_pct IS NOT NULL;
ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 7 Column: 5

标签: sqloraclegroup-by

解决方案


应该有按它分组的列是它的构建方式。因此,您可以聚合或操作 group by 的列。您得到 group by 错误的原因是您使用了子查询而不是 group by 或聚合的列。

简而言之,have 与 where 类似,但只是让您可以过滤组的记录,而不像 where 用于过滤整个表本身的记录

    SELECT d.department_name
   FROM departments d
    JOIN employees e
    ON (d.department_id = 
      e.department_id)
     Where
      e.commission_pct IS NOT NULL
   GROUP BY d.department_name
    HAVING  COUNT(*) > 5
   ;

推荐阅读