Oracle的 GROUP BY 表达式

select表项中不存在的列可以出现在 group by的列表项中,但反过来就不行了,在select列表项中出现的列必须全部出现在group by后面(聚合函数除外)

但一些朋友经常爱把select 列表项的中列忘了写在group by中。于是就出现了以上的错误ORA-00979 不是 GROUP BY 表达式。

Oracle的中文错误提示信息翻译得非常不到位,面对着不是 GROUP BY 表达式很多朋友摸不着头脑,不知道oracle在说什么。

例如下面的例子就会出现这个错误:

SQL> select deptno,job,avg(sal)

2 from emp

3 group by deptno;

select deptno,job,avg(sal)

*

ERROR 位于第 1 :

ORA-00979: 不是 GROUP BY 表达式

这里就是因为在select 列表像中出现了像deptnojob,而在group by中并没有出现的缘故。

以上的错误纠正为:

Select deptno,job,avg(sal) from emp

Group by deptno,job;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle中的GROUP BY表达式是用于对查询结果进行分组的语句,它可以将查询结果按照指定的列进行分组,并对每个分组进行聚合计算。因此,Oracle不是GROUP BY表达式,而是支持GROUP BY表达式的数据库管理系统。 ### 回答2: 当我们在使用Oracle数据库时,经常会用到Group By子句。它可以将数据进行分组,然后再对每组数据进行聚合操作,最终返回聚合结果。Group By子句已经成为SQL语言的基本组成部分之一,几乎所有的数据库管理系统都支持它。但是,有时我们会在使用Oracle数据库时发现,我们的Group By子句无法正常工作,出现“Oracle不是Group By表达式”的错误提示。那么,这个错误是什么原因造成的呢? 首先,我们需要了解Group By子句的语法规则。Group By子句必须出现在Select子句之后,而且必须指定一个或多个列名,以便将数据分组。也就是说,只能使用已经在Select子句中指定的列名,不能使用任意的表达式或函数。如果我们使用了一个不合法的表达式或函数作为分组依据,则会出现“Oracle不是Group By表达式”的错误提示。 其次,我们需要知道在Oracle数据库中,Group By子句是非常严格的。也就是说,在使用Group By子句时,必须确保每个被分组的列都出现在Select子句中,并且在任何一种情况下都不能省略。例如,我们不能在Select子句中选择了一个列,但在Group By子句中却没有指定它。同样,我们也不能在Group By子句中指定了一个列,但在Select子句中却没有选择它。如果发生了这种情况,也会出现“Oracle不是Group By表达式”的错误提示。 最后,我们还需要注意,Oracle数据库中的Group By子句对大小写是敏感的。也就是说,我们必须保证使用的列名或别名都与在Select子句中的写法完全一致。如果在Group By子句中使用了不正确的大小写,也会出现“Oracle不是Group By表达式”的错误提示。 综合以上几点,我们可以看到,“Oracle不是Group By表达式”的错误提示通常是由于在使用Group By子句时没有按照标准的语法规则进行操作。为了避免出现这种错误,我们在使用Group By子句时一定要注意语法规则,并确保每个被分组的列都出现在Select子句中,大小写也要一致。只有这样,才能保证Group By子句的顺利运行。 ### 回答3: Oracle是一种关系型数据库管理系统,用于管理和存储大量的数据。在Oracle中,GROUP BY语句是一个常用的SQL语句,用于将数据按照指定的字段分组并计算聚合函数的值。但是,在使用GROUP BY语句时,需要注意一些问题,其中一个就是GROUP BY表达式的问题。 在Oracle中,GROUP BY表达式是指在GROUP BY语句中间的字段或表达式。这些表达式用于将数据按照指定的条件分组,并计算聚合函数的值。这些表达式必须是来自于SELECT语句的列,或者是其中的聚合函数,否则Oracle将会报错。 如果在GROUP BY语句中使用了不符合要求的表达式Oracle将会返回错误信息,并提示无法识别的表达式。这样,就会导致GROUP BY语句失败,无法按照指定的条件进行分组,并计算聚合函数的值。 因此,需要在使用GROUP BY语句时,严格遵守Oracle的规范,使用符合要求的GROUP BY表达式。如果出现了GROUP BY表达式的错误,需要检查语句中是否存在错误的表达式,并将其修正或删除,以保证语句的正确性和可靠性。 总之,Oracle不支持无效的GROUP BY表达式,需要按照规范使用GROUP BY语句,以实现按条件分组和聚合函数计算的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值