试图查找具有最大平均值的记录(SQL)

时间:2015-04-12 16:15:23

标签: mysql sql

我有一个包含生产者和产品表的数据库,我正试图找到平均价格最贵的产品。基本上我必须找到每个生产者产品的平均值,然后找到平均成本最高的生产者,如果他们有相同的平均值,那么可能有不止一个生产者的平均成本最高。

我尝试使用下面的代码,但不明白为什么它不能解决?

忘记提及这是针对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

1 个答案:

答案 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