標準偏差や平均値をグループ毎の上位に関して出したい


`select avg(point) from table where (genre毎のpoint上位100位まで) GROUP BY genre;`

みたいな事がしたいのですが、どうすれば良いでしょうか？  
ポイント上位を入れたテーブルを作るくらいしか思いつかなかったので…




最初は `IN` 演算子とサブクエリで処理しようとしたのですが、以下のエラーメッセージが表示されるので、

[code]

    MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
    
[/code]

ユーザ定義変数(user-defined variable)とサブクエリを使ってみました。

[code]

    SET @num := 0, @genre := '';
    SELECT t.genre, avg(t.point) AS average
    FROM (
      SELECT t2.genre, t2.point,
        @num := IF(@genre = t2.genre, @num + 1, 1) AS rownum,
        @genre := t2.genre
      FROM test2 AS t2
      ORDER BY t2.genre ASC, t2.point DESC
    ) AS t WHERE t.rownum <= 100 GROUP BY t.genre;
    
[/code]




最初は `IN` 演算子とサブクエリで処理しようとしたのですが、以下のエラーメッセージが表示されるので、

[code]

    MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
    
[/code]

ユーザ定義変数(user-defined variable)とサブクエリを使ってみました。

[code]

    SET @num := 0, @genre := '';
    SELECT t.genre, avg(t.point) AS average
    FROM (
      SELECT t2.genre, t2.point,
        @num := IF(@genre = t2.genre, @num + 1, 1) AS rownum,
        @genre := t2.genre
      FROM test2 AS t2
      ORDER BY t2.genre ASC, t2.point DESC
    ) AS t WHERE t.rownum <= 100 GROUP BY t.genre;
    
[/code]

