我有一个包含三个标题的产品表,分别是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;
但是我得知这不是通用解决方案。任何人都可以告知此查询有什么问题。
答案 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。