hello-world
webエンジニアのメモ。とりあえずやってみる。

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;

参考URL


Related #MySQL

[mac]homebrewでmysqlをインストール

- インストール

RDSで日本語を使う場合の初期設定(utf8mb4)

RDSで日本語を使う場合、Parameter Groupsを作成し、

MySQLで時間毎のデータを集計する

ちょっとした分析レポートを作る機会があったのですが、「時間ごとに集計するSQLってどうやって書けばいいんだろう」と思って色々悩んでいました。