WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

datetime型のデータから日別の集計を行う

   

datetime型のデータから日別の集計を行う

例えば、あるユーザの成約を記録する以下のようなシンプルな`conversions`という名前のテーブルがあったとして

desc conversions
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| user_id    | int(11)  | NO   |     | NULL    |                |
| created_at | datetime | YES  |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+

この中のdatetime型のカラム(created_at)を利用して日別で何件レコードが生成されたかの集計を行うことができます。
集計を行うSQLは以下の通りです。

SELECT date(created_at) AS date, count(*) FROM conversions GROUP BY date;
+------------+----------+
| date       | count(*) |
+------------+----------+
| 2014-05-10 |       55 | 
| 2014-05-11 |       17 | 
| 2014-05-12 |        8 | 
+------------+----------+

集計でお馴染みの`GROUP BY`を利用しますが、`GROUP BY created_at`とやった場合は時刻単位で集計されてしまうので、上記のように日別で集計するように指定しています。

知っておくとけっこう便利です。

 - MySQL