2017-10-06 784 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没问题。 –