我在执行以下数据库查询时遇到问题。
我正在使用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表达式
有人可以帮我解决这个问题吗? 请告诉我这个表达方式有什么问题。
答案 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;