问题描述
因此,目标是获得平均订购量超过所有客户总数的平均顾客名单。
CITY SUM
---------------------------------------------------------------------------------------------------- ---------------------------------
Rome 14000$
Paris 19000$
我的代码可以运行,但不会在“平均数量排序”列上过滤结果,仅显示总平均值为35.22的结果。
解决方法
可能是您的意思:
select c.customernumber,c.customername,sum(od.quantity_ordered) as sum_qty,round(avg(od.quantity_ordered),2) as avg_dty
from customers c
join orders o using(customerNumber)
join orderdetails od using (orderNumber)
group by customernumber,customername
having avg(od.quantity_ordered) > (select avg(quantity_ordered) from orderdetails)
理论上:
-
您讨论了计算平均订购量,但是查询所要做的是比较每个客户的平均订购明细数量;假设后者就是您想要的
-
然后:由于您希望平均每个客户 ,因此请不要在
中输入订单号group by
-
不需要
in
或having
子句中的类似内容:只需将客户的平均值与计算总体的标量子查询进行比较
注意:
-
不要对标识符(例如列别名)使用单引号-它们用于文字字符串
-
表别名使查询更易于读写。给所有列加上它们所属表的别名的前缀使查询易于理解