我有一个包含生产者和产品表的数据库,我正试图找到平均价格最贵的产品。基本上我必须找到每个生产者产品的平均值,然后找到平均成本最高的生产者,如果他们有相同的平均值,那么可能有不止一个生产者的平均成本最高。
我尝试使用下面的代码,但不明白为什么它不能解决?
忘记提及这是针对SQL。
编辑:忘了说结果应该只显示最昂贵的平均值
SELECT producerId, average
FROM (SELECT producerId, AVG(productPrice) AS average
FROM product NATURAL JOIN producer
GROUP BY producerId) AS averages
WHERE MAX(average)
实施例: producerID |平均
1 | 10
2 | 8.5
3 | 10
4 | 9
5 | 8
结果: producerID |平均
1 | 10
3 | 10
答案 0 :(得分:0)
如果您想获得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