2016-12-16 62 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的那些部分之一,並不是經常使用,但在您需要時非常寶貴! –