Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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 我在执行下面的数据库查询时遇到问题_Sql_Database_Oracle11g - Fatal编程技术网

Sql 我在执行下面的数据库查询时遇到问题

Sql 我在执行下面的数据库查询时遇到问题,sql,database,oracle11g,Sql,Database,Oracle11g,我在执行下面的数据库查询时遇到问题 我使用的是Oracle 11g企业版 问题1: SELECT d.department_id, max(salary), min(salary), avg(salary), count(*) no_of_employees FROM departments d, employees e WHERE e.department_id = d.department_id GROUP BY d.department_id 结果:输出成功 问题2: SELECT d.

我在执行下面的数据库查询时遇到问题

我使用的是Oracle 11g企业版

问题1:

SELECT d.department_id, max(salary), min(salary), avg(salary), count(*) no_of_employees
FROM departments d, employees e
WHERE e.department_id = d.department_id
GROUP BY d.department_id
结果:输出成功

问题2:

SELECT d.department_id, d.department_name, max(salary), min(salary), avg(salary), count(*) no_of_employees
FROM departments d, employees e
WHERE e.department_id = d.department_id
GROUP BY d.department_id
结果:

ORA-00979:不是表达式的组

有人能帮我解决这个问题吗?
请告诉我这个表达式有什么问题。

您还必须按部门名称分组

您还必须按部门名称分组

您需要按没有聚合功能的所有列(最大值、计数等)分组。因此:

select d.department_id
     , d.department_name
     , max(salary), min(salary), avg(salary) , count(*) no_of_employees
from departments d, employees e
where e.department_id = d.department_id
group by d.department_id, d.department_name;
<>但是你也应该考虑做一个ANSI连接代替:

select department_id
     , department_name
     , max(salary), min(salary), avg(salary) , count(*) no_of_employees
from departments
join employees USING (department_id)
group by department_id, department_name;

您需要根据没有聚合函数的所有列(MAX、COUNT等)进行分组。因此:

select d.department_id
     , d.department_name
     , max(salary), min(salary), avg(salary) , count(*) no_of_employees
from departments d, employees e
where e.department_id = d.department_id
group by d.department_id, d.department_name;
<>但是你也应该考虑做一个ANSI连接代替:

select department_id
     , department_name
     , max(salary), min(salary), avg(salary) , count(*) no_of_employees
from departments
join employees USING (department_id)
group by department_id, department_name;

谢谢你的帮助。。下面的查询适用于我选择d.department\u id、d.department\u name、max(salary)、min(salary)、avg(salary)、count(*)no\u来自d部门的员工、e员工,其中e.department\u id=d.department\u id按d.department\u id分组、部门名称感谢您的帮助。。下面的查询适用于我选择d.department\u id、d.department\u name、max(salary)、min(salary)、avg(salary)、count(*)no\u来自d部门、e员工的员工,其中e.department\u id=d.department\u id按d.department\u id、部门名称分组