7

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

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

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

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

4

1 回答 1

8

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

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

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

于 2012-11-19T15:51:24.123 回答