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

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

公開日時

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

データ作成時刻があれば、DATE_FORMAT関数を用いて作成時刻を整形し、GROUP BYすればSQL一文で集計可能と判明。

これ便利ですね。

今後もまた使う機会があるかもしれないのでメモ。

  • サンプルテーブル構造
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`user_id`)
);
  • 時間毎の新規登録ユーザ数を集計
select count(user_id), DATE_FORMAT(created_at, '%Y/%m/%d %H') from user group by DATE_FORMAT(created_at, '%Y%m%d %H');
  • 日毎の新規登録ユーザ数を集計
select count(user_id), DATE_FORMAT(created_at, '%Y/%m/%d') from user group by DATE_FORMAT(created_at, '%Y%m%d');

参考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を行う際に以下のようなエラーが出ました