根据产品名称获取最高平均价格

时间:2019-05-07 12:05:58

标签: mysql

我有一个包含三个标题的产品表,分别是ProductID,ProductName和Price。我需要找到平均价格最高的产品的名称。有多种产品,对于不同的产品ID,它们也是重复的,我需要它们的平均价格。 示例数据如下所示:

ProductID   ProductName Price
1   A   18
2   A   19
3   B   10
4   C   22
5   D   21.35
6   C   25
7   A   30
8   B   40
9   E   97
10  A   31

我写的查询如下:

SELECT ProductName
FROM Products
group by ProductName
order by avg(Price) desc
limit 1;

但是我得知这不是通用解决方案。任何人都可以告知此查询有什么问题。

1 个答案:

答案 0 :(得分:0)

查询的唯一问题是平均价格等于最高平均价格的产品超过1种,因为它仅返回1行。
为了解决这种情况,您需要重新分组并在HAVING子句中使用查询:

select productname
from products
group by productname
having avg(price) = ( 
  select avg(price) 
  from products
  group by productname
  order by avg(price) desc 
  limit 1
);

请参见demo