2016-12-06 6 views
0

私はMySQLで作業しています。私は多くの集約関数を使用する必要がある長いコマンドを作成する必要があります。それは私のコードです...function aggregate内の関数集約

select count(field) from table group by field order by count(field) desc 

これをSUMまたはAVGにする必要がありますが、私はまだ分かりませんが、それは無関係です。私がこのようにしようとするとき:

select avg(count(field)) from table group by field order by count(field) desc 

私はエラーになります。 1つのクエリでこの関数の多くを使用する方法ですか、それともスライスしますか?

エラーがある:#1111 - グループ機能の使用が無効です。

答えて

1

一つの方法は、サブクエリです:

select avg(cnt) 
from (select count(field) as cnt 
     from table 
     group by field 
    ) t; 

簡単な方法は、単に直接計算を行うことです。

select count(*)/count(distinct field) 
from table; 
+0

あなたは窓関数バージョンがありません! :d – Hogan

+0

最後にtを使用すると、このクエリをエラーなしで実行するために使用されるトリックですか? – Stwosch