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

[aws][mysql5.6]microインスタンス使用時にメモリ不足になったのでmysqlの設定を調整

AWSでt2.microインスタンスを使用して色々動かしていたら、あるスクリプトの実行時に

ログファイルを空にする方法

ローカル環境ではmysqlのクエリログを出力するようにしているのですが、放置していたらかなりの容量になってきたので一度空にしようと思って調べてみました。

[mysql][rails]Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

mysql5.1が動いていた環境をmysql5.6にアップデートした後、rake db:createで utf8mb4のDBを作成しようとしたところ以下のエラーが発生

Mysql2::Error: Specified key was too long; max key length is 767 bytes limit

railsでactive\_adminのmigrationを行う際に以下のようなエラーが出ました