SQL SELECT产品其中'每个产品的平均价格'<值

SQL SELECT产品其中'每个产品的平均价格'<值

问题描述:

我只想返回具有平均价格的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 - 无效使用组功能的

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

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

如果使用您的查询,您将收到错误说'错误代码:1111.无效使用组功能 ',请尝试此查询

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