【问题标题】:为什么 ORA-00979: not a GROUP BY 表达式错误?
【发布时间】:2022-01-22 16:17:05
【问题描述】:

有人可以向我解释我如何在 group-by 中包含所有选择而不出错吗?

我做的任务是:“显示经理的编号和最小的员工!关闭所有 没有主管的主管。关闭所有 最低工资低于1000的团体!按降序对输出进行排序 薪水顺序”(使用谷歌翻译)

select mgr as Vorgesetztennummer, min(sal) as Mitarbeiter
from emp 
where mgr is not null
group by mgr
having sal>1000
order by sal desc;

这是 emp 表的一部分(只是为了让您可以看到它的样子):

错误:

ORA-00979: not a GROUP BY expression

如果有人能首先向我解释错误发生的方式和原因,那就太好了。

提前致谢。

【问题讨论】:

    标签: sql oracle group-by


    【解决方案1】:
    select mgr as Vorgesetztennummer, min(sal) as Mitarbeiter
    from emp 
    where mgr is not null
    group by mgr
    having min(sal) >1000
    order by 2 desc;
    

    【讨论】:

      【解决方案2】:

      如果您在 SQL 中有 GROUP BY attrs 子句,则不能在聚合函数之外的 SELECTHAVINGORDER BY 中使用属性 a ⊄ attrs。因此,在您的示例sal ⊄ {mgr} 中,您的查询可能应该是

      select mgr as Vorgesetztennummer, 
             min(sal) as Mitarbeiter
      from emp 
      where mgr is not null
      group by mgr
      having min(sal) > 1000
      order by min(sal) desc;
      

      【讨论】:

        猜你喜欢
        • 2021-09-12
        • 2021-10-26
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        相关资源
        最近更新 更多