Oracle / PLSQL: ORA-00937 Error Message

原文:Oracle / PLSQL: ORA-00937 Error Message

ORA-00937: not a single-group group function
起因:

尝试执行一条要包含group by的 SELECT 语句(如:min方法,max方法,SUM方法,COUNT方法),但是缺少GROUP BY 语句就导致了ORA-00937的错误。

解决:

有以下方法来解决你所遇到的问题。

Option #1
Rewrite the SELECT statement so that the column or
expression listed in the SELECT list is also found in the GROUP BY
clause.
翻译:
方法1
重写SELECT语句,以便找到在GROUP BY中找到罗列在SELECT语句中的列或者是表达式。

对不起,翻译的太烂了,我没有理解到原文的意思,但我觉得它想表达的意思是:你在group by中用到的列,在select中要出现。

Option #2 Remove the GROUP BY function (ie: MIN Function, MAX
Function, SUM Function, COUNT Function) from the SELECT statement. 方法2
从SELECT语句中移除GROUP BY 函数(如:min()方法, max()方法,sum()方法, COUNT()方法) 。
为什么这么做呢?GROUP BY函数要配合GROUP BY 来使用,而将其移除,是因为你根本不需要GROUP BY 函数。

Option #3
Remove the expression from the SELECT list that was not in the GROUP BY clause.
删除掉SELECT列表选项中表达式,因为你在GROUP BY语句中没有使用到相关的列。(这里我也不太懂,后面有机会看看书本,我记得GROUP BY使用是有一定规则的,后面看到了再来补充。)

示例:
SELECT department, MIN(salary) AS "Lowest salary" FROM employees;

运行上面语句时会报错:
在这里插入图片描述
对于上句的错误,你可以在后面添加一个GROUP BY来进行纠正:

SELECT department, MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department;

对于我的错误,也是因为没有配合GROUP BY语句造成的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值