2016-11-20 119 views
2

我只想返回具有平均價格的prod_id's < 7.查看下面的示例,查詢應只返回prod_id 1(平均價格= 5)SQL SELECT產品其中'每個產品的平均價格'<值

+---------+-------+ 
| prod_id | price | 
+---------+-------+ 
| 1  | 3  | 
| 1  | 4  | 
| 1  | 8  | 
| 2  | 12 | 
| 2  | 14 | 
+---------+-------| 

所以理想的結果應該是:

+---------+-------+ 
| prod_id | avg_pr| 
+---------+-------+ 
| 1  | 5  | 
+---------+-------| 

我嘗試這樣做:

SELECT prod_id, AVG(price) 
FROM products 
WHERE AVG(price) < 7 
GROUP BY prod_id 

它給我這個錯誤:#1111 - 無效使用組功能的

回答

3

你不能在where子句中使用聚合函數,你需要使用HAVING爲:

SELECT prod_id, AVG(price) 
    FROM products 
    GROUP BY prod_id 
    HAVING AVG(price) <7; 
2

如果使用您的查詢,您將收到錯誤說'錯誤代碼:1111.無效使用組功能 ',請嘗試此查詢

select id, avg(price) AS average from a group by id having avg(price)<7;