Oracle出现不是group by 表达式的原因

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.姓名就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值