Oracle,SQL语句中对错误提示:不是单组分组函数的一个疑问

2024-12-28 09:32:17
推荐回答(2个)
回答1:

select deptno,max(count(*)) from emp group by deptno
其中max(count(*))相当于2次分组,那么对应的select 中的其他列也需要进行2次分组,比如说:
select max(deptno),max(count(*)) from emp group by deptno

原因很简单,sql语言就面向集合的,如果求出来max(count(*)),那么deptno需要对应的是哪一条呢?

回答2:

出现“不是单组分组函数”是因为分组后只能用一些汇总的函数,不能用查询“*”,因为非分组的值不属于任何分组,所以就报错了。
举例: 通过group by进行分组后,可以通过sum进行求和,count进行数值计算。
sql:select username ,count(accountNo) as count,sum(amount) as amount
from tablename group by username;
以上就可以求出username下,accountNo的条数和对应的总amount。