Oracle不是group by 表达式的原因
今天在写sql语句中碰到一个不是group by 表达式的问题,
总结了一下产生这个问题的原因
第一,没有把所有的非聚合函数字段加入到group by 中
例如我们要查询一个班级学生的总成绩
select
b.姓名,
sum(c.成绩),
b.性别,
b.年龄
from
班级表 b,
成绩表 c
where
b.姓名=c.姓名
group by
b.姓名,
b.性别,
b.年龄
在这个sql中的group by中 姓名,性别,年龄都必须在 group by分组里
否则会出现 不是group by 表达式的错误。
第二,在group by 中不能用别名
比如
select
b.姓名 as name,
sum(c.成绩),
b.性别,
b.年龄
from
班级表 b,
成绩表 c
where
b.姓名=c.姓名
group by
name,
b.性别,
b.年龄
把姓名换成name 也是会出现 不是group by 表达式的错误
把name 改成b.姓名就可以了。
本文探讨了在Oracle SQL中使用Group By时常见的两个问题:一是未将所有非聚合函数字段加入Group By中;二是Group By中使用了别名。通过具体的例子详细解释了如何避免这些错误。
2726

被折叠的 条评论
为什么被折叠?



