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 种的情况,因为它只返回 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
);
请参阅演示。
推荐阅读
- javascript - React 路由器更改 URL 但不更改视图
- swift - 为什么我会因为索引超出范围而出现致命错误?
- sprite-kit - 如何使用 SKScene 作为 SCNSphere 的纹理?
- python - 在 Pytorch 中重复张量的特定列
- vba - 是否可以使用 vba 在 Internet Explorer 中找到所有变量的列表
- python - 无法在 R 中抓取网页,出现 403 禁止错误
- python - 在将数据保存到 mysql 时,过程以退出代码 1073741845 完成
- machine-learning - 批量大小会导致错误的预测吗?
- android - androidx activity can not be cast to AccountAuthenticatorActivity
- java - 如何获取 HashMap 中包含的所有键的特定属性值?