完全小白,求教大佬关于我写的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还是运行不出来。