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

时间:2014-07-22 18:50:14

标签: 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.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:不是GROUP BY表达式

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

2 个答案:

答案 0 :(得分:3)

您还必须按department_name分组

答案 1 :(得分:1)

您需要GROUP BY所有没有聚合函数的列(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;