Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 什么';oracle 11g上出现ORA-00979的原因是什么_Sql_Oracle_Group By - Fatal编程技术网

Sql 什么';oracle 11g上出现ORA-00979的原因是什么

Sql 什么';oracle 11g上出现ORA-00979的原因是什么,sql,oracle,group-by,Sql,Oracle,Group By,试图理解SQL中的groupby用法 我已经多次遇到这个错误,我可能无法识别核心,以便在以后的时间里解决它 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 I

试图理解SQL中的
groupby
用法

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

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:不是表达式分组
97900000-“不是表达式的组”
*原因:
*行动:
第7行第5列出错

您的语法错误,条件应在where子句中,having不应重新选择值

 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 ;

请参见

您的语法错误,条件应在where子句中,having不应重新选择值

 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 ;

参见

have应该有按其构建方式分组的列。因此,having允许您聚合或操作group by的列。获取group by错误的原因是使用了子查询而不是group by或AGGRATE列

简言之,have与where类似,只是have允许您过滤组的记录,而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
   ;

它的构建方式应该是按它分组的列。因此,having允许您聚合或操作group by的列。获取group by错误的原因是使用了子查询而不是group by或AGGRATE列

简言之,have与where类似,只是have允许您过滤组的记录,而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
   ;