SQLで月別件数取得
3 月 19th, 2007 in Programming, SQL
BLOGとかで月別アーカイブを作るときにUNIXタイムスタンプから月別件数取得する方法.ここのBLOGの月別アーカイブを作るときに使ったのでメモ.
テーブル用意
今回は単純にidとタイムスタンプ(フィールド名time)だけの構造とします.
サンプルデータは
| id | time |
|---|---|
| 1 | 1162837923 |
| 2 | 1166144389 |
| 3 | 1167482794 |
| 4 | 1172428965 |
| 5 | 1172495938 |
| 6 | 1173296727 |
| 7 | 1173629185 |
| 8 | 1174167275 |
| 9 | 1174168986 |
な感じで
月別件数取得のSQL文
GROUP BYがポイントか.
SELECT FROM_UNIXTIME( time, '%Y-%m' ) AS ym, COUNT( * ) AS count FROM test_table GROUP BY ym ORDER BY ym DESC
FROM_UNIXTIMEが対応しているのはMySQL?とか(現在調査中...)?
次のように返ってきます
| ym | count |
|---|---|
| 2007-03 | 4 |
| 2007-02 | 2 |
| 2006-12 | 2 |
| 2006-11 | 1 |
FROM_UNIXTIME( time, ‘%Y-%m’ )のところを替えるといろいろ応用できそう.てか常識だったか??

