奇怪的GROUP BY错误

rosk3322 2009-10-22 11:55:51
在oracle中输入语句
select o.name
from orders o, part p
group by o.name
having o.partnum = p.partnum
and o.quantity * p.price > avg(o.quantity * p.price);
就会报这样的错
and o.quantity * p.price > avg(o.quantity * p.price)
*
ERROR at line 5:
ORA-00979: not a GROUP BY expression

为什么会报这样的错呢?
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2009-10-23
  • 打赏
  • 举报
回复
select o.name
from orders o, part p
group by o.name
where o.partnum = p.partnum
having o.quantity * p.price > avg(o.quantity * p.price);
s试试
小灰狼W 2009-10-23
  • 打赏
  • 举报
回复
不对,avg不能这样放在where里用
楼主说明下需求,这个avg是两表连接后全部o.quantity * p.price的平均值还是分组后当前o.name 分组内的平均值
ruixindongdong 2009-10-23
  • 打赏
  • 举报
回复
select o.name
from orders o, part p
where o.partnum = p.partnum
and o.quantity * p.price > avg(o.quantity * p.price);
既然 只查 o.name 那就不需要GROUP BY的`
HAVING一般和聚合函数用的` 这地方不需要内 用WHERE吧
小灰狼W 2009-10-23
  • 打赏
  • 举报
回复
having o.partnum = p.partnum
and o.quantity * p.price > avg(o.quantity * p.price);
having后的表达式不是group by表达式呗
o.partnum = p.partnum 要写到where子句里
后面的那个,不知道你意图是什么

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧