7

上位 10 位までの結果は可能ですSUMか? AVG数千の値のリストがあります。上位10個の値の平均を知りたいです。私はこれを試しました:

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

しかし、これにより、トップ 10 だけでなく、テーブルの値のリスト全体の平均が得られます。

私はMySQLを使用しています。これを 1 つの SQL ステートメントとして記述したいと思います。

4

1 に答える 1

8

最初に上位 10 行を選択し、次にそれらを平均する必要があります。

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

それ以外の場合は、すべての行の平均を選択してから、最大 10 個の結果を返します (LIMIT が最後に適用されるため)。お気づきかもしれませんが、返されるのは 1 行 (平均) だけであり、LIMIT は何の効果もありません。

于 2012-11-19T15:51:24.123 に答える