如何使用LIMIT使用聚合函数?

时间:2012-11-19 15:47:24

标签: sql

前10名结果可以SUMAVG吗?我有几千个值列表。我想知道前10个值的平均值。我试过这个:

SELECT AVG(some_val)
FROM table
ORDER BY some_val DESC
LIMIT 10;

但是这给了我表中整个值列表的平均值,而不仅仅是前10个。

我正在使用MySQL。我想把它写成一个SQL语句。

1 个答案:

答案 0 :(得分:6)

您需要先选择前10行 ,然后对其进行平均。

SELECT AVG(some_val)
  FROM (SELECT * FROM table ORDER BY some_val DESC LIMIT 10) t;

否则,您选择所有行的平均值,然后返回最多10个结果(因为LIMIT适用于最后)。正如您可能发现的那样,您只返回一行(平均值),LIMIT无效。