我有一个包含生产商和产品表的数据库,我正在尝试查找平均产品最昂贵的生产商。基本上,我必须找到每个生产商产品的平均值,然后找到平均值最昂贵的生产商,其中如果它们具有相同的平均值,则可以有多个生产商具有最昂贵的平均值。
我尝试了下面的代码,但不明白为什么它不起作用?
忘记提及这是针对 SQL 的。
编辑:忘记说结果应该只显示最昂贵的平均值
SELECT producerId, average
FROM (SELECT producerId, AVG(productPrice) AS average
FROM product NATURAL JOIN producer
GROUP BY producerId) AS averages
WHERE MAX(average)
示例: 生产者 ID |平均
1 | 10
2 | 8.5
3 | 10
4 | 9
5 | 8
结果: 生产者 ID |平均
1 | 10
3 | 10
最佳答案
如果您想获得 3 个最昂贵的生产商,请使用如下查询:
SELECT producerId, average
FROM (
SELECT pr.producerId, AVG(pr.productPrice) AS average
FROM product AS pp INNER JOIN producer AS pr ON pp.producerId = pr.producerId
GROUP BY pr.producerId
) AS T
ORDER BY average DESC
LIMIT 3;
有关更多信息,请参阅文档:https://dev.mysql.com/doc/refman/5.0/en/select.html
关于mysql - 尝试查找平均值最大的记录 (SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591585/