2017-02-27 160 views
0

筛选出结果,我有以下表ratings,与栏目:SQL查询基于计数

rating_idprod_idratingbuyerstatusprod_type [rating_id是独一无二]

rating列取值从15buyer只需要2个值01

我想编写一个SQL查询,用于从1的买方那里以平均评级检索所有这些产品,使得1的买方数量大于5。

例如,我想要的结果是这样的:

`prod_id` `avg(rating)` `count(*)` 
ksks  3.2   6 
kglgkj  4.0   8 
jfkfj  2.0   13 

我写了下面的查询,但它不工作:

SELECT PROD_ID,AVG(等级),计数(* )WHERE buyer = 1 AND count(*)>5 GROUP BY prod_id;

我得到的错误为无效使用组函数

任何帮助,将不胜感激。谢谢

+0

不能在使用agregate功能where子句。如果要过滤结果,请使用HAVING子句http://www.mysqltutorial.org/mysql-having.aspx – vitalygolub

回答

2

您必须使用HAVING检查COUNT。使用以下查询:

SELECT prod_id, AVG(rating), COUNT(*) 
WHERE buyer = 1 
GROUP BY prod_id 
HAVING COUNT(*) > 5 
1

可以使用具有本:

SELECT prod_id, avg(rating), count(*) 
WHERE buyer = 1 
GROUP BY prod_id 
HAVING count(*) > 5