前10名结果可以SUM
或AVG
吗?我有几千个值列表。我想知道前10个值的平均值。我试过这个:
SELECT AVG(some_val)
FROM table
ORDER BY some_val DESC
LIMIT 10;
但是这给了我表中整个值列表的平均值,而不仅仅是前10个。
我正在使用MySQL。我想把它写成一个SQL语句。
答案 0 :(得分:6)
您需要先选择前10行 ,然后对其进行平均。
SELECT AVG(some_val)
FROM (SELECT * FROM table ORDER BY some_val DESC LIMIT 10) t;
否则,您选择所有行的平均值,然后返回最多10个结果(因为LIMIT适用于最后)。正如您可能发现的那样,您只返回一行(平均值),LIMIT无效。