2017-10-06 45 views
0

我有一個SQL查詢可以檢索與廣告表連接的評級表的平均評分。在COUNT(*)條件中添加WHERE條件MySQL

我的查詢工作正常,但我想添加一個WHERE語句來獲得只有獲得兩個或更多評級的廣告。

這是我的查詢:

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
GROUP BY ad_id 

而我所需的查詢:

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
WHERE num_rates > 1 
GROUP BY ad_id 

但MariaDB的告訴我:
[錯誤] 1054 - 在「where子句中未知列 'num_rates' '

謝謝對不起,我的小白在MySQL

+1

考慮使用** **有條款,這與聚合函數的工作原理是COUNT – fungusanthrax

+0

你應該在你組語句中使用'having' 。 –

+0

與groupby合作 –

回答

3

您不能在WHERE中使用列別名 因此您需要執行此操作。

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
WHERE COUNT(user_id) > 1 
GROUP BY ad_id 

或者更好的使用與GROUP HAVING作品,

SELECT ad_id, AVG(rating) as average_rating, 
COUNT(user_id) as num_rates 
FROM ads_rating 
GROUP BY ad_id 
HAVING COUNT(user_id) > 1 
+0

哇,這是答案(第二個片段),我可以接受它,直到8分鐘,但謝謝! –

+0

@bachecubano沒問題。 –