2017-02-27 196 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