時間(タイムスタンプ)情報付きのデータについて、指定した範囲でまとめた上で、各期間について頻度を取得するコマンドをメモ。
例えば、accessed_at という datetime 型の列があり、その時刻に value 列に納められる情報を取得したことを記録するログテーブル access_log を想定する。
そのとき、月ごとのアクセス数を取得するためには以下のようなコマンドを発行する。
SELECT COUNT(value),YEAR(accessed_at),MONTH(accessed_at) FROM access_log GROUP BY YEAR(accessed_at),MONTH(accessed_at);
以下のような結果が得られる。
+--------------+------------------+-------------------+ | COUNT(value) | YEAR(accessed_at) | MONTH(accessed_at) | +--------------+------------------+-------------------+ | 1893 | 2009 | 4 | | 2197 | 2009 | 5 | | 1617 | 2009 | 6 | | 2354 | 2009 | 7 | | 1836 | 2009 | 8 | | 1795 | 2009 | 9 | | 1930 | 2009 | 10 | | 1855 | 2009 | 11 | | 1757 | 2009 | 12 | | 2386 | 2010 | 1 | | 2844 | 2010 | 2 | | 2100 | 2010 | 3 | +--------------+------------------+-------------------+