2016-12-16 75 views
1

在我的SQL期末考试,还有就是效果的问题:SQL - WHERE子句基于平均值吗?

显示客户ID,次数客户已经下了订单,平均装运量客户已经支付四舍五入至小数点后两位。只显示平均运费大于5美元的结果。

我的回答:

SELECT c.customer_id, 
    COUNT(o.order_id) AS 'number_of_orders', 
    ROUND(AVG(o.ship_amount), 2) AS 'ave_shipping_amount' 
FROM customers c JOIN orders o 
    ON c.customer_id = o.customer_id 
GROUP BY c.customer_id; 

我试图WHERE ave_shipping_amount > 5GROUP BY以上,但随着ave_shipping_amount列不存在这种没有工作。
我也试过WHERE ROUND(AVG(o.ship_amount), 2) > 5,但这是一个不正确的使用组功能。

这个问题将如何解决?这看起来基本够用了,但是我正在疯狂地尝试弄明白。

+0

看看文档:http://dev.mysql.com/ doc/refman/5.7/en/select.html – axiac

+0

优秀的第一个问题在这里!这是一个非常明确的问题,包括相关信息,并清楚地显示你在发布之前自己弄清楚事情的努力。我希望更多的新用户做出这样的努力。谢谢! –

回答

2

您需要使用具有:

HAVING ROUND(AVG(o.ship_amount), 2) > 5 

它就像一个WHERE子句,只是它被聚集后计算

+0

我是如何在不知道这一点的情况下浏览整个SQL过程的......无论如何,这是完美的,谢谢! – PatTastic

+0

不客气。它是SQL的那些部分之一,并不是经常使用,但在您需要时非常宝贵! –