mysql - 根据产品名称获取最大平均价格

标签 mysql

我有一个产品表,其中包含三个 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/

相关文章:

mysql - SQL 数据库中的图像

java - Hibernate 映射 - 具有相同列的两个表引用一个具有外键的表

Mysql建表语法错误

mysql - 使用 Slick 3.0 与同一个表进行两个连接

mysql - 使用命令行将 my.cnf 文件复制到 Mysql 目录

php - 选择数据以及列的总和

mysql - 在bash脚本中输出MySQL进程

mysql - 重复的列名 'user_id'问题

PHP/SQL 列表顺序不显示

php - 如果用户离开页面/系统停止,自动回写