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

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

- インストール

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

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

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

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