【问题标题】:I have a issue in executing the below database query我在执行以下数据库查询时遇到问题
【发布时间】:2014-07-22 18:50:13
【问题描述】:

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

我使用的是 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 表达式

有人可以帮我解决这个问题吗? 请让我知道这个表达式有什么问题。

【问题讨论】:

    标签: sql database oracle11g


    【解决方案1】:

    您还必须按部门名称分组

    【讨论】:

    • 感谢您的帮助.. 下面的查询对我有用 select d.department_id, d.department_name, max(salary), min(salary), avg(salary) , count(*) no_of_employees from部门 d, 员工 e 其中 e.department_id = d.department_id group by d.department_id, department_name
    【解决方案2】:

    您需要对所有没有聚合函数的列(MAX、COUNT 等)进行 GROUP BY。因此:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 2018-08-14
      相关资源
      最近更新 更多