一、错误提示及原因
ORA-00937错误一般是指在SQL语句中,有一个聚合函数出现了,但是它的后面没有单组函数或者GROUP BY语句。这时Oracle数据库会提示ORA-00937错误。
SELECT department, SUM(salary)
FROM employee;
在上述SQL语句中,SUM函数是一个聚合函数,但是没有指定单组函数或GROUP BY语句。这时就会出现ORA-00937错误。
二、解决方法
下面给出几种解决方法。
1. 添加单组函数或GROUP BY语句
在有聚合函数的SQL语句中,必须要添加单组函数或GROUP BY语句。单组函数指的是MAX、MIN、AVG、COUNT这些函数,它们只针对每个分组求出一个结果。
SELECT department, SUM(salary)
FROM employee
GROUP BY department;
以上SQL语句中,SUM函数后面跟了GROUP BY语句,表示按照部门分组,每个部门的工资总和作为结果返回。
2. 使用聚合函数
在没有单组函数或GROUP BY语句的情况下,也可以使用聚合函数。
SELECT MAX(salary)
FROM employee;
以上SQL语句中,MAX函数是一个聚合函数,不需要指定单组函数或GROUP BY语句。
3. 去掉聚合函数
只有在需要聚合计算的时候才需要使用聚合函数或者单组函数,如果不需要进行聚合计算,则可以将聚合函数去掉。
SELECT department, salary
FROM employee;
以上SQL语句中,没有聚合函数或单组函数,不需要添加GROUP BY语句。
三、小结
在SQL语句中,聚合函数一般需要与单组函数或GROUP BY语句一起使用,否则会出现ORA-00937错误。要注意选择合适的聚合函数和单组函数,以及正确使用GROUP BY语句。