我有一个产品表,其中包含三个 header ,即 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 个产品的平均价格等于最大平均价格,因为它只返回 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 .
关于mysql - 根据产品名称获取最大平均价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022260/