求教sql中我的语句为什么运行不出来

完全小白,求教大佬关于我写的sql语句问题。我感觉自己逻辑上没有错。为什么运行不出来呢。求指正我哪里错了。

我的sql:select * from orders where purch_amt>(select avg(purch_amt) from orders group by customer_id

 

select o.* from orders as o

join (select customer_id, avg(purch_amt) as avg_amt from orders group by customer_id) as a

on o.customer_id=a.customer_id

where o.purch_amt>a.avg_amt

 

看你的语句的意思,你想分组获取purch_amt高于平均值的数据,但是你的写法不对。

select avg(purch_amt) from orders group by customer_id 是分组获取平均值,你前面用purch_amt> 相当于只查询这个字段大于某个值的数据,并未分组比较。

幻灰龙的写法是对的。

不好意思,写错了,纠正一下,我的sql是:我的sql:select * from orders where purch_amt>(select avg(purch_amt) from orders group by customer_id)

我能看懂答案的子查询结果图,我不太懂的是答案的子查询和前面的purch_amt比较时就被认为是分组做了比较,而我今天重新写的sql——  select * from orders where purch_amt >(select customer_id,avg(purch_amt)  from orders  group by customer_id)中子查询得到的结果和图解是一样的,可为什么就不被sql语句认为是分组做了比较的呢,我重新写的这个sql还是运行不出来。