MySQLで集計結果(COUNT)の平均(AVG)を取る場合はサブクエリを使う
以下のようなプレゼント応募情報を管理するテーブルがあった場合に、全ユーザの平均応募数を取得するには
CREATE TABLE `present` (
`present_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`present_id`)
);
一度、user_idごとの応募総数を集計し(サブクエリ)、その結果を用いて平均を出す必要があります。
SQLはこんな感じです。
select avg(a.num) from (select count(present_id) as num from present group by user_id) as a;