加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

调用聚合函数的错误用法

发布时间:2020-05-27 14:35:04 所属栏目:程序设计 来源:互联网
导读:如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中;否则就会出现下面的错误:ORA-00937: not a single-group group function。例如,下面这个查询选择product_type_id列和AVG(price),但是却没有使用一个包含pr

如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中;否则就会出现下面的错误:ORA-00937: not a single-group group function。例如,下面这个查询选择product_type_id列和AVG(price),但是却没有使用一个包含product_type_id的GROUP BY子句:

之所以会出现这个错误是因为数据库不知道怎样在结果集中处理product_type_id列。考虑一下:这个查询既试图使用AVG聚合函数对多行记录进行操作,却又试图从每行中获得product_type_id列的值;这两个操作是不可能同时完成的。此时必须提供一个GROUP BY子句告诉数据库将product_type_id列相同的行分组在一起,然后数据库就可以将这些组中的行传递给AVG函数。

警告:

如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中。

还有,不能在WHERE子句中使用聚合函数来限制行。如果这样做,就会出现下面的错误:ORA-00934: group function is not allowed here。例如:

之所以会出现这个错误是因为WHERE子句只能用来对单行而不是行组进行过滤。要过滤行组,可以使用HAVING子句。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读